php去centos负载,centos-高负载下的502网关错误(nginx / php-fpm)

我在一个非常繁忙的互联网站点上工作,该站点经常会有非常大的流量高峰。 在这些峰值期间,每秒请求数百页,这会产生随机502网关错误。

现在,我们在装有4个SAS 15k驱动器(raid10),16核CPU和24GB DDR3内存的计算机上运行Nginx(1.0.10)和PHP-FPM。 此外,我们还使用了最新的Xcache版本。 该数据库位于另一台计算机上,但是该计算机的负载非常低,并且没有问题。

在正常负载下,一切运行正常,系统负载在1以下,并且PHP-FPM状态报告从未一次真正显示超过10个活动进程。 总是有大约10GB的可用内存。 在正常负载下,机器每秒处理约100次网页浏览。

当巨大的流量高峰到达并且机器每秒请求数百个页面浏览量时,就会出现问题。 我注意到FPM的状态报告会显示多达50个活动进程,但这仍远低于我们配置的300个最大连接数。 在这些峰值期间,Nginx状态报告多达5000个活动连接,而不是正常平均值1000。

操作系统信息:CentOS 5.7版(最终版)

CPU:Intel(R)Xeon(R)CPU E5620 @ 2.40GH(16核)

php-fpm.conf

daemonize = yes

listen = /tmp/fpm.sock

pm = static

pm.max_children = 300

pm.max_requests = 1000

我尚未设置rlimit_files,因为据我所知,如果没有,则应使用系统默认值。

fastcgi_params(仅将值添加到标准文件中)

fastcgi_connect_timeout 60;

fastcgi_send_timeout 180;

fastcgi_read_timeout 180;

fastcgi_buffer_size 128k;

fastcgi_buffers 4 256k;

fastcgi_busy_buffers_size 256k;

fastcgi_temp_file_write_size 256k;

fastcgi_intercept_errors on;

fastcgi_pass unix:/tmp/fpm.sock;

nginx.conf

worker_processes 8;

worker_connections 16384;

sendfile on;

tcp_nopush on;

keepalive_timeout 4;

Nginx通过Unix套接字连接到FPM。

sysctl.conf

net.ipv4.ip_forward = 0

net.ipv4.conf.default.rp_filter = 1

net.ipv4.conf.default.accept_source_route = 0

kernel.sysrq = 1

kernel.core_uses_pid = 1

net.ipv4.tcp_syncookies = 1

kernel.msgmnb = 65536

kernel.msgmax = 65536

kernel.shmmax = 68719476736

kernel.shmall = 4294967296

net.ipv4.conf.all.send_redirects = 0

net.ipv4.conf.default.send_redirects = 0

net.ipv4.tcp_max_syn_backlog = 2048

net.ipv4.icmp_echo_ignore_broadcasts = 1

net.ipv4.conf.all.accept_source_route = 0

net.ipv4.conf.all.accept_redirects = 0

net.ipv4.conf.all.secure_redirects = 0

net.ipv4.conf.all.log_martians = 1

net.ipv4.conf.default.accept_redirects = 0

net.ipv4.conf.default.secure_redirects = 0

net.ipv4.icmp_echo_ignore_broadcasts = 1

net.ipv4.icmp_ignore_bogus_error_responses = 1

net.ipv4.conf.default.rp_filter = 1

net.ipv4.tcp_timestamps = 0

net.ipv4.conf.all.rp_filter=1

net.ipv4.conf.default.rp_filter=1

net.ipv4.conf.eth0.rp_filter=1

net.ipv4.conf.lo.rp_filter=1

net.ipv4.ip_conntrack_max = 100000

Limits.conf

* soft nofile 65536

* hard nofile 65536

这些是以下命令的结果:

ulimit -n

65536

ulimit -Sn

65536

ulimit -Hn

65536

cat /proc/sys/fs/file-max

2390143

问题:如果PHP-FPM的连接没有用尽,负载仍然很低,并且有大量可用的RAM,那么在高流量期间可能导致这些随机502网关错误的瓶颈是什么?

注意:默认情况下,此计算机的ulimit为1024,因为我将其更改为65536,所以我尚未完全重新引导计算机,因为它是生产计算机,这将导致停机时间过多。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值