运维工具箱性能优化

运维工具箱是最近接手的一个项目,开始性能相当差,并发超过500就不能正常访问。后来陆陆续续添加了三台机器,但是并发高起来的话,仍然出现大量504,502以及页面无法显示。7月20日通宵加班到7月21日10点,对服务器做了一些优化,情况好了很多。这两天又研究了一下php,linux,tcp,然后对服务器再次做了优化。目前单台服务器在并发超过5000的情况下仍然访问流畅,总体来说优化结果比较满意。这里把相关知识信息都记录一下吧:
1、修改nginx.conf
access_log /dev/null;
关掉access_log,降低磁盘I/O。关掉后ssh明显快了
2、修改php-fpm.conf
pm = static
pm.max_children = 2000
pm.max_requests = 500
增加php-fpm进程数。
3、修改fastcgi配置
fastcgi_connect_timeout 300;
fastcgi_send_timeout 300;
fastcgi_read_timeout 300;
fastcgi_buffer_size 128k;
fastcgi_buffers 2 256k;
fastcgi_busy_buffers_size 256k;
fastcgi_temp_file_write_size 256k;
增加fastcgi超时时间和缓冲区大小。
2和3主要解决服务器502和504错误。
4、使用mysql_pconnect
查询接口使用持久连接,缓解了mysql连接的压力
5、数据缓存memcache
缓存已查询的数据,减少查询mysql次数
6、使用opcache
详见链接:php5.5以下版本配置opcache
opcache能缓存住opcode,极大的减少了php执行时间。请求最快从10s以上降低到100ms以下
7、修改tcp内核参数
vim /etc/sysctl.conf
net.ipv4.tcp_tw_reuse = 1 //允许将TIME_WAIT sockets重新用于新的TCP连接
net.ipv4.tcp_max_tw_buckets = 5000 //表示系统同时保持TIME_WAIT套接字的最大数量,如果超过这个数字,TIME_WAIT套接字将立刻被清除并打印警告信息
/sbin/sysctl -p
减少TIME_WAIT数量,服务器性能更上一层楼(http协议中,服务端是主动关闭连接的一方,根据tcp/ip协议,time_wait都留在了服务端-_-!)

关于TIME_WAIT过多的解决方案,还可以修改MSL值,因为要重新编译内核,所以放弃了。keepalive也尝试过,但是配好以后服务器一直是502,就去掉了,这个还要在研究下。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值