我做一個AJAX請求,並根據答案,我會刷新當前頁面,代碼是這樣的:XMLHttpRequest的不緊密連接
var xhttp = new XMLHttpRequest();
xhttp.onreadystatechange = function() {
if (xhttp.readyState == 4 && xhttp.status == 200) {
var res = xhttp.responseText;
if (res.length > 0) {
window.location = res;
}
}
}
xhttp.open("POST", "getlink.php", true);
xhttp.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
xhttp.send('id='+id);
但是我注意到,連接不會關閉服務器。當運行這個命令:
netstat -anl | grep 80 | awk '/^tcp/ {t[$NF]++}END{for(state in t){print state, t[state]} }'
我看到了很多的連接在TIME_WAIT狀態:
LAST_ACK 4
LISTEN 2
SYN_RECV 2
ESTABLISHED 1421
FIN_WAIT1 9
FIN_WAIT2 17
TIME_WAIT 2250
這似乎是XMLHttpRequest的不有着密切的聯繫創造了大量的服務器上的問題。
優秀!謝謝!你知道我應該在nginx/php5fpm配置上修改什麼設置嗎? –
請參閱keepalive_disable,keepalive_requests和keepalive_timeout指令:http://nginx.org/en/docs/http/ngx_http_core_module.html#keepalive_disable但是請注意,如果要處理大量的併發請求,nginx是功能最強大的服務器之一連接,所以檢查這確實是你的問題... – yankee
我設法通過調整一些sysctl設置來減少TIME_OUT連接的數量。我的服務器有一些非常糟糕的默認值:net.ipv4.tcp_max_tw_buckets只有8192和net.ipv4.tcp_tw_reuse是0(tcp套接字不重用)。改變它們後,服務器連接性有所改善感謝您指點我正確的方向! –