Nginx timeout超時(shí)配置詳解
最近項(xiàng)目中用到了nginx,后臺(tái)用的是Java, 發(fā)現(xiàn)有一個(gè)請求后臺(tái)處理操過了1分鐘,結(jié)果請求Status Code為504 Gateway Time-out.
理解了下nginx 所有timeout相關(guān)的配置,如下:
keepalive_timeout
HTTP 有一個(gè) KeepAlive 模式,它告訴 webserver 在處理完一個(gè)請求后保持這個(gè) TCP 連接的打開狀態(tài)。若接收到來自客戶端的其它請求,服務(wù)端會(huì)利用這個(gè)未被關(guān)閉的連接,而不需要再建立一個(gè)連接。
http keep-alive, 網(wǎng)頁的每一個(gè)請求都是HTTP (圖片, CSS等), 而打開HTTP 請求是要先建立TCP 連接, 而如果一個(gè)頁面每個(gè)請求都要打開及關(guān)閉一個(gè)TCP 連接就會(huì)做成資源的浪費(fèi). keepalive_timeout 就是當(dāng)一個(gè)HTTP 請求完成, 其TCP 連接會(huì)存留下來的時(shí)間, 如果這時(shí)有另一個(gè)HTTP 請求過來, 會(huì)複用這個(gè)TCP 連接, 如果再?zèng)]有新的請求過來, 才會(huì)關(guān)閉其TCP連接
user nginx; worker_processes 1; error_log /var/log/nginx/error.log warn; pid /var/run/nginx.pid; events { worker_connections 1024; } http { include /etc/nginx/mime.types; default_type application/octet-stream; log_format main '$remote_addr - $remote_user [$time_local] "$request" ' '$status $body_bytes_sent "$http_referer" ' '"$http_user_age
# 配置段: http,默認(rèn)75s
keepalive_timeout 60;
- send_timeout:發(fā)送數(shù)據(jù)至客戶端超時(shí), 默認(rèn)60s, 如果連續(xù)的60s內(nèi)客戶端沒有收到1個(gè)字節(jié), 連接關(guān)閉
- proxy_connect_timeout: nginx與upstream server的連接超時(shí)時(shí)間
- proxy_read_timeout: nginx接收upstream server數(shù)據(jù)超時(shí), 默認(rèn)60s, 如果連續(xù)的60s內(nèi)沒有收到1個(gè)字節(jié), 連接關(guān)閉
- proxy_send_timeout: nginx發(fā)送數(shù)據(jù)至upstream server超時(shí), 默認(rèn)60s, 如果連續(xù)的60s內(nèi)沒有發(fā)送1個(gè)字節(jié), 連接關(guān)閉
so_timeout:
當(dāng)用戶跟SERVER開啟了TCP CONNECTION --> 一段長時(shí)間這個(gè)CONNECTION 沒traffic (so_keepalive timeout) --> SERVER 發(fā)出探測包看用戶是否還存在 --> 若探測包沒回, 則關(guān)閉TCP CONNECTION
so_keepalive=on|off|[keepidle]:[keepintvl]:[keepcnt]
so_keepalive=30m::10 will set the idle timeout (TCP_KEEPIDLE) to 30 minutes, leave the probe interval (TCP_KEEPINTVL) at its system default, and set the probes count (TCP_KEEPCNT) to 10 probes.
以上三個(gè)參數(shù)只能使用一個(gè),不能同時(shí)使用, 比如so_keepalive=on, so_keepalive=off或者so_keepalive=30s::(表示等待30s沒有數(shù)據(jù)報(bào)文發(fā)送探測報(bào)文)
以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持本站。
版權(quán)聲明:本站文章來源標(biāo)注為YINGSOO的內(nèi)容版權(quán)均為本站所有,歡迎引用、轉(zhuǎn)載,請保持原文完整并注明來源及原文鏈接。禁止復(fù)制或仿造本網(wǎng)站,禁止在非www.sddonglingsh.com所屬的服務(wù)器上建立鏡像,否則將依法追究法律責(zé)任。本站部分內(nèi)容來源于網(wǎng)友推薦、互聯(lián)網(wǎng)收集整理而來,僅供學(xué)習(xí)參考,不代表本站立場,如有內(nèi)容涉嫌侵權(quán),請聯(lián)系alex-e#qq.com處理。