一般这种情况排序服务器cpu,内存过高卡死的原因,就是你的php程序运行过长了。
解决办法
1.技术流:找到php运行超时的原因,一般来说要么就是连接mysql超时,或者curl请求太多超时,这种时候就需要你去优化代码了,降低请求和查询时间,或者将这次请求加入队列,异步运行。
2.暴力流:因为一个不合理的需求你必须要让程序运行那么长的时间,还得把运行结果返回到页面上,这个时候怎么办呢??只有怎么暴力怎么来了
首先在php函数内设置
set_time_limit(0);
让这个php程序可以不限时的运行,如果设置了这个代码,请你务必在前端的请求按钮上加遮罩!!你永远不会知道前端使用者在看到点击没反应时点击按钮的手速有多快~~
第二,设置nginx配置,apache的这里就不讲了,因为我就用的nginx
在
http {
.......
}
中加上
fastcgi_connect_timeout 75; # 链接
fastcgi_read_timeout 300; # 读取
fastcgi_send_timeout 300; #发请求
这里的这个数字指的是秒,参数的含义
fastcgi_connect_timeout=300; #连接到后端fastcgi超时时间
fastcgi_send_timeout=300; #向fastcgi请求超时时间(这个指定值已经完成两次握手后向fastcgi传送请求的超时时间)
fastcgi_rend_timeout=300; #接收fastcgi应答超时时间,同理也是2次握手后
这样就可以了,只要你的php处理时间不超过5分钟那就没问题~