由于PHP-FPM侦听队列,站点变得不可访问,CPU触及100%

我一直在绞尽脑汁,试图解决这个问题,我的生产服务器上每隔几小时随机出现一个Wordpress博客(体面stream量:2000个用户实时平均日,5000+个好日子,每分钟浏览量从300到700+)。

我使用Newrelic监视性能,我注意到一个奇怪的事情:

每几个小时(随机),PHP-FPM池的状态如下(昨天的实际状态)

pool: www process manager: static start time: 02/Jan/2017:05:03:16 -0500 start since: 27290 accepted conn: 1107594 listen queue: 777 max listen queue: 794 listen queue len: 40000 idle processes: 0 active processes: 100 total processes: 100 max active processes: 101 max children reached: 0 slow requests: 0 

重新启动PHP-FPMnginx解决了这个问题,但是在几个小时后又发生了。 任何帮助表示赞赏。 请指导我


服务器设置:

 DigitalOcean 48GB Memory 16 Core Processor 480GB SSD Disk 

PHP-FPM池设置:

 pm = static pm.max_children = 100 pm.max_requests = 5000 

nginxconfiguration:

 worker_processes 32; worker_rlimit_nofile 100000; events { worker_connections 40000; use epoll; multi_accept on; } 

我也使用xcache ,在Wordpress上使用xcache varnish 。 (也有Cloudflare)

sysctl.conf的:

 # Increase size of file handles and inode cache fs.file-max = 2097152 # Do less swapping vm.swappiness = 10 vm.dirty_ratio = 60 vm.dirty_background_ratio = 2 ### GENERAL NETWORK SECURITY OPTIONS ### # Number of times SYNACKs for passive TCP connection. net.ipv4.tcp_synack_retries = 2 # Allowed local port range net.ipv4.ip_local_port_range = 2000 65535 # Protect Against TCP Time-Wait net.ipv4.tcp_rfc1337 = 1 # Decrease the time default value for tcp_fin_timeout connection net.ipv4.tcp_fin_timeout = 15 # Decrease the time default value for connections to keep alive net.ipv4.tcp_keepalive_time = 300 net.ipv4.tcp_keepalive_probes = 5 net.ipv4.tcp_keepalive_intvl = 15 ### TUNING NETWORK PERFORMANCE ### # Default Socket Receive Buffer net.core.rmem_default = 31457280 # Maximum Socket Receive Buffer net.core.rmem_max = 12582912 # Default Socket Send Buffer net.core.wmem_default = 31457280 # Maximum Socket Send Buffer net.core.wmem_max = 12582912 # Increase number of incoming connections net.core.somaxconn = 40000 # Increase number of incoming connections backlog net.core.netdev_max_backlog = 65536 # Increase the maximum amount of option memory buffers net.core.optmem_max = 25165824 # Increase the maximum total buffer-space allocatable # This is measured in units of pages (4096 bytes) net.ipv4.tcp_mem = 65536 131072 262144 net.ipv4.udp_mem = 65536 131072 262144 # Increase the read-buffer space allocatable net.ipv4.tcp_rmem= 10240 87380 12582912 net.ipv4.udp_rmem_min = 16384 # Increase the write-buffer-space allocatable net.ipv4.tcp_wmem= 10240 87380 12582912 net.ipv4.udp_wmem_min = 16384 # Increase the tcp-time-wait buckets pool size to prevent simple DOS attacks net.ipv4.tcp_max_tw_buckets = 1440000 net.ipv4.tcp_tw_recycle = 1 net.ipv4.tcp_tw_reuse = 1