服務(wù)器環(huán)境處在專網(wǎng)內(nèi),對端口開放有嚴(yán)格要求,目前對外接口只開放80端口,因此選擇了用nginx做反向代理,能正常提供對外接口服務(wù),但是碰到一個(gè)問題,同一個(gè)訪問地址,第一次請求返回特別慢,3-5秒,后面再訪問同一地址,返回都是幾十毫秒,比如: ?page=1,第一次訪問很慢,后面就正常了,等我訪問 ?page=2,第一次又很慢,后面又正常。
如果不通過nginx,直接啟動服務(wù)監(jiān)聽80端口,既把nginx關(guān)閉,只使用webman,沒有任何問題,所以可以確定問題是出在nginx上。
百度了很多解決方案,沒有一個(gè)跟我的一樣。
把nginx進(jìn)程設(shè)置為1,然后重啟nginx,ps auxf找到nginx子進(jìn)程pid,執(zhí)行命令 strace -ttp pid
看下nginx進(jìn)程的系統(tǒng)調(diào)用,能大概判斷出哪里有問題。
root 8508 0.0 0.0 131944 9480 ? Ss 11:35 0:00 nginx: master process /www/server/nginx/sbin/ngi
www 8509 0.0 0.2 162664 34512 ? S 11:35 0:00 _ nginx: worker process
www 8510 0.0 0.0 131816 9900 ? S 11:35 0:00 _ nginx: cache manager process
www 8511 0.0 0.0 131816 9900 ? S 11:35 0:00 _ nginx: cache loader process
[root@iZ51k2facfn13jZ ~]# strace -ttp 8508
strace: Process 8508 attached
11:37:15.141017 rt_sigsuspend([], 8
這兩個(gè)注釋掉后,正常了!
大佬,之前提過相同的問題,我本地測試發(fā)現(xiàn)確實(shí)是這樣,如果直接使用端口訪問沒有問題,但是參照http://m.wtbis.cn/doc/webman/others/nginx-proxy.html使用nginx代理之后,首次訪問會很慢。