关于搭建一个高性能网站的服务器的架设思路以及nginx测试的并发
对于高性能网站的架设,主要就是请求量大,那我们该如何进行支撑?
考虑到下面的几个方面:
1.要减少请求,那对于开发人员来说,网站的css文件进行合并,背景图片也要合并,一般都是请求一张比较大的图片,然后在进行分割,然后就是减少mysql的查询。
2.对于前端的nginx,我们使用nginx的expire参数,利用浏览器的缓存等,来减少后端服务器的查询。
3.对于前端的静态的文件,我们使用cdn来进行分发请求。
那到了最后一步,不可避免的请求-----我们呢可以使用服务器集群+负载均衡来支撑。
所以在前面三个阶段进行简单的优化后,到了最后一步,我们呢就不要再考虑减少请求这个方向了,而是思考如何更好的响应高并发的请求了
有一个大的认识----既然响应是不可避免的,我们要做的就是把工作的内容“平均”分给每台服务器上。
最理想的状态是,每台服务器的性能呢都能被充分的利用。
接下来测试一下nginx的一个并发量和它的一些调优:
首先编译的时候,我们需要加上一个nginx的统计模块,
./configure --prefix=/usr/local/nginx --add-module=/root/src/ngx_http_consistent_hash-master/ --with-http_stub_status_module
在配置文件中,我们可以这样:
location /status {
stub_status on;
}
我们在另一台机器上,使用ab进行压测:
/data1/http2/bin/ab -c -n http://10.210.237.222/index.html
接下来看一下最终的结果:
This is ApacheBench, Version 2.3 <$Revision: $>
Copyright Adam Twiss, Zeus Technology Ltd, http://www.zeustech.net/
Licensed to The Apache Software Foundation, http://www.apache.org/ Benchmarking 10.210.237.222 (be patient)
Completed requests
Completed requests
Completed requests
Completed requests
Completed requests
Completed requests
Completed requests
Completed requests
Completed requests
Completed requests
Finished requests Server Software: nginx/1.4.
Server Hostname: 10.210.237.222
Server Port: Document Path: /index.html
Document Length: bytes Concurrency Level:
Time taken for tests: 16.154 seconds
Complete requests:
Failed requests:
(Connect: , Receive: , Length: , Exceptions: )
Write errors:
Non-2xx responses:
Total transferred: bytes
HTML transferred: bytes
Requests per second: 3095.22 [#/sec] (mean)
Time per request: 323.079 [ms] (mean)
Time per request: 0.323 [ms] (mean, across all concurrent requests)
Transfer rate: 2551.24 [Kbytes/sec] received Connection Times (ms)
min mean[+/-sd] median max
Connect: 475.5
Processing: 762.3
Waiting: 739.6
Total: 931.7 Percentage of the requests served within a certain time (ms)
%
%
%
%
%
%
%
%
% (longest request)
上面是一个压测的结果,那我们使用http://10.210.237.222/status观察发现:
Active connections:
server accepts handled requests Reading: Writing: Waiting:
情况并不如人意,因此我们需要进行对nginx进行调优。
好然后我们接下来对nginx进行调优,最终能达到1W的并发!
关于搭建一个高性能网站的服务器的架设思路以及nginx测试的并发的更多相关文章
- 利用git+hugo+markdown 搭建一个静态网站
利用git+hugo+markdown 搭建一个静态网站 一直想要有一个自己的文档管理系统: 可以很方便书写,而且相应的文档很容易被分享 很方便的存储.管理.历史记录 比较方面的浏览和查询 第一点用M ...
- 快速搭建一个本地的FTP服务器
快速搭建一个本地的FTP服务器 如果需要开发FTP文件上传下载功能,那么需要在本机上搭建一个本地FTP服务器,方便调试. 第一步:配置IIS Web服务器 1.1 控制面板中找到"程序& ...
- express + mongodb 搭建一个简易网站(一)
express + mongodb 搭建一个简易网站(一) 前言:后台使用node.js的express框架,数据库使用mongodb,模板使用ejs.大概就这些. 开始第一个简易网站之旅吧.... ...
- 搭建一个wordpress网站需要做哪些工作
今天做了自己的个人网站:二飞日志 之前因为服务器的问题,因为备案的原因辛辛苦苦做的站点数据没了.还好的是没有多少数据.没关系,重新来.有了上一次的经验,这次搭建起来比较顺手.但是也出现了几个问题.下面 ...
- 快速搭建一个本地的FTP服务器 win10及win7
快速搭建一个本地的FTP服务器 如果需要开发FTP文件上传下载功能,那么需要在本机上搭建一个本地FTP服务器,方便调试. (win10) 第一步:配置IIS Web服务器 1.1 控制面板中找到“ ...
- 通过ProGet搭建一个内部的Nuget服务器
.NET Core项目完全使用Nuget 管理组件之间的依赖关系,Nuget已经成为.NET 生态系统中不可或缺的一个组件,从项目角度,将项目中各种组件的引用统统交给NuGet,添加组件/删除组件/以 ...
- 使用gitblit搭建一个简单的局域网服务器
使用gitblit搭建一个简单的局域网服务器 1.使用背景 现在很多使用github管理代码,但是github需要互联网的支持,而且私有的git库需要收费.有一些项目的代码不能外泄,所以,搭建一个局域 ...
- express + mongodb 搭建一个简易网站 (四)
express + mongodb 搭建一个简易网站 (四) 目前网站整体页面都已经能全部展示了,但是,整个网站还有两个块需要做完才能算完整,一个连接数据库,目前网站上的数据都是抓取的本地假数据,所以 ...
- express + mongodb 搭建一个简易网站 (三)
express + mongodb 搭建一个简易网站 (三) 前面已经实现了基本的网站功能,现在我们就开始开搞一个完整的网站,现在整个网站的UI就是下面的这个样子. 我们网站的样子就照着这个来吧. 1 ...
随机推荐
- acm之poj题库1001方法
题目所言是银行等不能用四舍五入等影响精度的方法来计算的情况,是为提出背景.因此需要特殊的编写.这里使用了好几种方法才找到一个合适的方法.因为C++或者C缺乏类库,又跟底层关联太大,缺乏常用的类库,在写 ...
- CentOS7 连网 拨号上网 PPoe网
CentOS7 连网 拨号上网 PPoe网 在安装之前,请确定是否安装 rp-pppoe-3.5.rmp 如果没有安装,请使用 --replacepkgs 先强制安装它 (CentOS-7 ...
- [经验交流] Mesos-dns 和 Marathon-lb 简要使用方法
Mesos-dns 和 Marathon-lb 是mesosphere 官网提供的两种服务发现和负载均衡工具.官方的文档主要针对DCOS,针对其它系统的相关中文文档不多,下面是我在Centos7上的安 ...
- 快速开发一个PHP电影爬虫
今天来做一个PHP电影小爬虫.我们来利用simple_html_dom的采集数据实例,这是一个PHP的库,上手很容易.simple_html_dom 可以很好的帮助我们利用php解析html文档.通过 ...
- TP中的session和cookie
session:1.session('name','value'); //设置session2.$value = session('name'); // 获取所有的session 3.2.2版本新 ...
- php 对象中连贯执行方法
连贯操作的重点是返回当前对象,以便可以继续执行 class Ceshi{ public $str = ''; public function f1($a){ $this->str .= $a; ...
- php三维数组去重
假设叫数组 $my_array; // 新建一个空的数组. $tmp_array = array(); $new_array = array(); // 1. 循环出所有的行. ( $val 就是某个 ...
- Django 之 查看执行的sql语句
前提: 我的app名称为core,models.py内容如下: # coding:utf-8 from django.db import models # Create your models her ...
- Oracle_RAC数据库GI的PSU升级(11.2.0.4.0到11.2.0.4.8)
Oracle_RAC数据库GI的PSU升级(11.2.0.4.0到11.2.0.4.8) 本次演示为升级oracle rac数据库,用GI的psu升级,从11.2.0.4.0升级到11.2.0.4.8 ...
- Android jar包的导出和使用
一.工程打成JAR包. 1. eclipse下有一工程JsnTxJar,右键工程名选择Export. 选择Java->JAR file 下图所示左边一栏只勾选src,右边一栏都不用勾 ...