nodejs 通過nginx后出現響應慢的解決方法


    最近用了nodejs搭建服務器,然后用了nginx做了反向代理,項目開發需求,沒辦法。但是發現了經過代理之后發現網頁請求變慢了,而且是不能忍的一分鍾以上。

    一開始,懷疑是在nodejs那邊的問題,結果在nodejs那邊進行了判斷(通過寫測試代碼),但是發現是經過了一分多鍾請求才到nodejs這邊,那么只能先排除nodejs這方面的問題。

    那么要排除nginx的問題,我的環境是 windows7(x64) nginx(1.62)  nodejs(4.23),配置如下

server {
    listen 80;
    server_name mysite.com;
    location / {
        proxy_set_header    X-Real-IP           $remote_addr;
        proxy_set_header    X-Forwarded-For     $proxy_add_x_forwarded_for;
        proxy_set_header    Host                $http_host;
        proxy_set_header    X-NginX-Proxy       true;
        proxy_set_header    Connection          "";
        proxy_http_version  1.1;
        proxy_pass          http://localhost:3333;
    }
}

    這是一個比較普通的配置,找不出來問題,那么只能去找錯誤日志了,突然發現錯誤日志error.log里面有這么一段代碼

2015/12/25 16:30:43 [error] 7652#7008: *1 upstream timed out (10060: A connection attempt failed because the connected party did not properly respond after a period of time, or established connection failed because connected host has failed to respond) while connecting to upstream, client: 127.0.0.1, server

    之前沒怎么留意錯誤日志,罪過了啊,那么既然發現了這個錯誤,找方法就簡單多了。

    像是nodejs那邊沒有給nginx及時響應,那么可以增加這幾個配置來解決(單位為秒)

proxy_connect_timeout 1; 
proxy_send_timeout 30; 
proxy_read_timeout 60;

 

    這三個設置的定義是:

    proxy_connect_timeout
    后端服務器連接的超時時間_發起握手等候響應超時時間

    proxy_read_timeout
    連接成功后_等候后端服務器響應時間_其實已經進入后端的排隊之中等候處理(也可以說是后端服務器處理請求的時間)

    proxy_send_timeout
    后端服務器數據回傳時間_就是在規定時間之內后端服務器必須傳完所有的數據

    添加之后,就解決了,完整的是:

server {
    listen 80;
    server_name mysite.com;
    location / {
        proxy_set_header    X-Real-IP           $remote_addr;
        proxy_set_header    X-Forwarded-For     $proxy_add_x_forwarded_for;
        proxy_set_header    Host                $http_host;
        proxy_set_header    X-NginX-Proxy       true;
        proxy_set_header    Connection          "";
        proxy_http_version  1.1;
        proxy_connect_timeout 1; 
        proxy_send_timeout 30; 
        proxy_read_timeout 60;
        proxy_pass          http://localhost:3333;
    }
}



    




免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM