ajax php 不影响进程,ajax已并发请求php,但php-fpm却没有如预期fork出多个进程来处理?...
項目業務中有同時發起ajax異步請求相關業務接口數據的邏輯,一直以來總覺得比預期的并發處理慢得多,最近抽空做了下純凈測試才發現,原來一個個異步請求雖然是同時由瀏覽器發起了,但等待響應確實阻塞在排隊的(這完全浪費了php-fpm的多進程并發處理啊)。下面舉例說明,比如ajax同時異步請求test.php及test2.php,js代碼如下:
$.get("test.php");
$.get("test2.php");
test.php中代碼如下:
sleep(1);
test2.php中代碼如下:
sleep(1);
測試發現(Chrome F12打開網絡異步XHR請求)2個ajax請求是先后執行同時發起的,但請求test2.php的響應卻被阻塞等待1秒后,自己再執行需要1秒后得到成功響應200狀態。此刻查看php-fpm進程數狀態:
pstree -ap |grep php-fpm |grep -v grep
發現除了php-fpm管理進程外,始終只有另外一個php-fpm子進程(不用考慮php-fpm進程數方面的配置,這個已做測試正確的配置),但按道理來說應該是有另外2個php-fpm子進程的(另外測試發現是這個結果跟是否是請求同一php文件或者同一URL都無關,結果都一樣阻塞)。我猜想,是否針對同一站點域名同一IP的請求,php-fpm總是阻塞的只開出一個進程來處理?有大神能給出權威的解釋嗎?
總結
以上是生活随笔為你收集整理的ajax php 不影响进程,ajax已并发请求php,但php-fpm却没有如预期fork出多个进程来处理?...的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 2015服务器性能排名,【新年大礼】史上
- 下一篇: win下php的memcached的安装