a服务器使用curl_multi执行5000并发,访问b服務器一个静态html文件
需要解决:让5000并发成功率能够稳定
原因定位:出现改问题是服务端发送了RST的tcp,其中win=0客户端不再发包。
两种猜测:1 tcp连接数上限被拒绝(然而并不是这些tcp的三次握手都已经完成登录过程并且发送了http请求) 2内存不够处理请求,所以服务端发送了win=0的rst包(目前仳较有这个可能)
最后:暂时放弃试验性能优化这块,内容太多了涉及网络(tcp),cpu内存(tcp使用的内存,程序使用的内存php-fpm内存等等),服务器的配置优化。。我晕了
1 php-fpm不会释放内存(导致执行curl_multi的服务器内存飙高宕机每次top查看剩余内存,不够就要重启php-fpm)而且貌似是轮询调用php-fpm
3 可以使用popen代替exec同时打开多个进程(相当于并发执行某些命令)