阿末 发表于 2017-1-27 09:46:42

独服lnmp老是502挂掉,付费找人做的优化,分享出来

服务器配置其实还是不错的。e3-1231-v3,16G内存。但是12月底开始频繁502,另外,lnmp的502自动重启脚本也没用。
本来想找军哥付费解决,但是军哥一直不在线,后来淘宝找了个兄弟。
优化了很多地方,我直接贴出来,与大家分享,也希望军哥指正,另外502脚本没用的原因其实很简单,脚本里的域名我没改成自己的……Sock通信方式当打开文件数超多的时候,稳定性不好。改成用9000端口通信方式:
/usr/local/php/etc/php-fpm.conf 里面修改
<value name="listen_address">/tmp/php-cgi.sock</value>

<value name="listen_address">127.0.0.1:9000</value>
增加php进程,可以降低单个进程承担的资源压力:
<value name="max_children">5</value> 默认的5
改成
<value name="max_children">64</value>

Php-fpm.conf 里面原先设置的进程驻留方式(pm)是static也就是固定数量的进程,且进程不退出,就不释放资源。就有积累打开的句柄的风险。将php-fpm.conf 里面的 pm方式改成改成apache管理模式,使得php进程定期退出和启动新进程,释放资源。

宗上, 这个php-fpm.conf 总的修改如下(<的行代表旧配置,>的行代表修改后的配置):
diff      /usr/local/php/etc/php-fpm.conf.old.2017-01-13 /usr/local/php/etc/php-fpm.conf
26c26
<       <value name="listen_address">/tmp/php-cgi.sock</value>
---
>       <value name="listen_address">127.0.0.1:9000</value>
50c50
<         <value name="style">static</value>
---
>         <value name="style">apache-like</value>
55c55
<         <value name="max_children">5</value>
---
>         <value name="max_children">64</value> ;增加php服务进程的数量
79c79
<       <value name="rlimit_files">51200</value>
---
>       <value name="rlimit_files">65535</value>;提高允许打开的文件句柄数量
81c81
<       <value name="rlimit_core">0</value>
---
>       <value name="rlimit_core">65535</value>
93c93
<       <value name="max_requests">10240</value>;由于访问量大,10240小了会进程退出太频繁,pm切换管理压力大,所以增大这个数字。
---
>       <value name="max_requests">40960</value> ;定量请求后让进程退出和启动新进程




优化系统最大打开文件数限制:
【系统参数优化 sysctl】:
# diff/etc/sysctl.conf.old/etc/sysctl.conf
41,43c41,57
< fs.file-max=65535
< fs.file-max=65535
< fs.file-max=65535
---
> #fs.file-max=65535
> #fs.file-max=65535
> fs.file-max=70000#增大系统最大允许的文件句柄数(超过65535)
> net.ipv4.tcp_max_tw_buckets = 6000#以下这些都是优化网络行为
> net.ipv4.ip_local_port_range = 1024 65000
> net.ipv4.tcp_tw_recycle = 1
> net.ipv4.tcp_tw_reuse = 1
> net.ipv4.tcp_syncookies = 1
> net.core.somaxconn = 262144
> net.core.netdev_max_backlog = 262144
> net.ipv4.tcp_max_orphans = 262144
> net.ipv4.tcp_max_syn_backlog = 262144
> net.ipv4.tcp_synack_retries = 1
> net.ipv4.tcp_syn_retries = 1
> net.ipv4.tcp_fin_timeout = 30
> net.ipv4.tcp_keepalive_time = 1200
> net.ipv4.tcp_orphan_retries = 2

ming20130 发表于 2017-1-30 22:20:07

换php版本吧5.2的    <value name="style">apache-like</value>好像是不生效的

阿末 发表于 2017-1-30 22:56:19

回复 2# 的帖子

程序里还有几年前开发的老插件,一直也比较尴尬。
过阵子准备调试好适配性就升级到5.4
页: [1]
查看完整版本: 独服lnmp老是502挂掉,付费找人做的优化,分享出来