Loving Coding & Visual Design

网站压力测试

ab压力测试:centos可以yum install http-tool

举例:50并发测试:(一共一千个请求,每次并发50个)
ab
-v 10 前十行header
-t 10 十秒超时
-n 1000 一千个链接
-kc 50 五十个并发
-H 'Accept-Encoding: gzip' 压缩头
-H 'connection:keep-alive' 保持连接
-T 'application/x-www-form-urlencoded'
http://website

ab -n 1000 -kc 50 -H 'Accept-Encoding: gzip' -H 'connection:keep-alive' -T 'application/x-www-form-urlencoded' http://website

在用ab测试的时候,只要出现Failed requests(失败的请求),就会出现三种失败的类型统计:Connect、Length、Exception。

Connect:向服务器发送请求失败;服务器连接失败;请求过程连接中断等。

Length:服务器返回的数据长度不一致,一般是对比Content-Length的值。

Exception:与服务器连接过程中发生意外错误。

这里主要说明一下Length,ab会把第一次成功返回的content-length作为基准,如果后面的请求返回的content-length跟第一次的不一样,它就会把这次请求当成是失败了。
对于动态类型的网站,每次服务器返回的数据都不一定相同,所以如果ab提示的是Length错误,基本都可以忽略掉。

测试报错:
apr_poll: The timeout specified has expired (70007)
apr_socket_recv: Connection timed out (110)

可以增加系统默认配置/etc/sysctl.conf来解决:# echo "655360" > /proc/sys/net/ipv4/netfilter/ip_conntrack_max

修改/etc/sysctl.conf, /sbin/sysctl -p立即生效
永久修改内核参数: echo “10″ > /proc/sys/net/ipv4/tcp_fin_timeout

带宽: 5M
Nginx最大并发连接数: 20480
php-fpm: pm static pm.max_children 500
Mysql连接数: 1000
Mysql并发: 8
内存: 8G


upstream timed out (110: Connection timed out) while reading upstream
nginx.conf.
http {
...
fastcgi_read_timeout 600s;
...
}

readv() failed (104: Connection reset by peer) while reading upstream

request_terminate_timeout = 600

//////////////
高负载linux服务器的内核调优
net.ipv4.tcp_syncookies = 1
#表示开启SYN Cookies。当出现SYN等待队列溢出时,启用cookies来处理,可防范少量SYN攻击,默认为0,表示关闭;
net.ipv4.tcp_tw_reuse = 1
#表示开启重用。允许将TIME-WAIT sockets重新用于新的TCP连接,默认为0,表示关闭;
net.ipv4.tcp_tw_recycle = 1
#表示开启TCP连接中TIME-WAIT sockets的快速回收,默认为0,表示关闭。
net.ipv4.tcp_fin_timeout = 30
#表示如果套接字由本端要求关闭,这个参数决定了它保持在FIN-WAIT-2状态的时间。
net.ipv4.tcp_keepalive_time = 1200
#表示当keepalive起用的时候,TCP发送keepalive消息的频度。缺省是2小时,改为20分钟。
net.ipv4.ip_local_port_range = 1024 65000
#表示用于向外连接的端口范围。缺省情况下很小:32768到61000,改为1024到65000。
net.ipv4.tcp_max_tw_buckets = 5000
#表示系统同时保持TIME_WAIT套接字的最大数量,如果超过这个数字,
#TIME_WAIT套接字将立刻被清除并打印警告信息。默认为180000,改为5000。
#对于Apache、Nginx等服务器,上几行的参数可以很好地减少TIME_WAIT套接字数量,
#但是对于Squid,效果却不大。此项参数可以控制TIME_WAIT套接字的最大数量,避免Squid服务器被大量的TIME_WAIT套接字拖死

如果我们要修改系统允许最大文件打开数,可以通过ulimit -SHn来做,例如要临时修改系统最大打开文件数为51201个,那么用如下命令:
ulimit -SHn 51201
每次重启系统时,该值会被自动还原,可以将上述命令写入 /etc/rc.local 中。如果想永久更改,可以按照如下修改:
vi /etc/security/limits.conf
# add
* soft nofile 51201
* hard nofile 51201

系统最大打开文件数影响到的配置文件(以下必须设置为系统设置相一致,例如设置系统最大打开文件数为:51201):
A、Nginx配置文件nginx.conf的配置项:worker_rlimit_nofile、worker_connections、open_file_cache等,例如设置为:
worker_rlimit_nofile 51201;
events
{
use epoll;
worker_connections 51201;
}
http
{
#其它参数略过
open_file_cache max=51201 inactive=20s;
open_file_cache_min_uses 1;
open_file_cache_valid 30s;
#其它参数略过
}

系统共享内存优化:
系统共享内存大小主要影响到eaccelerator的设置:
eaccelerator.shm_size="32"
该项为eaccelerator可使用的共享内存大小(单位为MB)设置。
在Linux下,单个进程的最大共享内存使用量受/proc/sys/kernel/shmmax中设置的数字限制(单位为字节),例如Redhat 4.7的shmmax默认值为33554432字节(33554432bytes/1024/1024=32MB)。
临时更改该值(例如修改为128MB=128x1024x1024=134217728字节):
echo 134217728 > /proc/sys/kernel/shmmax
echo 134217728 > /proc/sys/kernel/shmall
按照以上方法更改,在每次重启系统时,该值会被自动还原。如果想永久更改,可以修改/etc/sysctl.conf文件,设置:
#系统共享内存大小优化
kernel.shmmax = 134217728



下一页


最 近 文 章

  1. Google工具栏的安全浏览功能 - Thu, 17 Aug 2006 08:57:48 +0000
  2. mac 终端常见问题 - Mon, 30 Nov -0001 00:00:00 +0000
  3. Login SSH with Rsa Key - Mon, 30 Nov -0001 00:00:00 +0000
  4. 重新学习Linux - Mon, 30 Nov -0001 00:00:00 +0000
  5. Linux基本管道命令 - Mon, 30 Nov -0001 00:00:00 +0000
  6. Reading - Mon, 30 Nov -0001 00:00:00 +0000
  7. 关于数据统计 - Mon, 30 Nov -0001 00:00:00 +0000
  8. Redis使用小结 - Mon, 30 Nov -0001 00:00:00 +0000
  9. Selenium自动化测试 - Mon, 30 Nov -0001 00:00:00 +0000
  10. 关于selinux - Mon, 30 Nov -0001 00:00:00 +0000