性能測試之nginx瓶頸優化


壓測場景

800線程做穩定性壓測時,接口大批量返回500異常,如下所示

可以發現,很明顯是Nginx返回的錯誤。但是從接口返回看不出太多的細節問題,需要打印nginix日志查看

日志分析

打印nginx日志,可以看到大量的異常信息:Too many open files

看起來是句柄數超出文件限制了
ulimit -a查看一下linux的句柄,發現已經加到65535,最大值

查看nginx進程句柄數,發現也是65535,最大值

linux句柄和nginx進程句柄都已經放到最大了,為什么還會報錯呢?

問題分析

仔細想一想,其實這個Too many open files反映的並不是句柄數,而是打開文件數。什么是打開文件數?
linux下,有兩個值可以代表打開的文件
1.file-max【最大打開文件數】
2.ulimit【最大文件句柄數】
通過lsof | grep 應用進程號 | wc -l可以實時查看當前進程一共打開了多少文件,如下所示,一共打開了70多萬。。。。

然后再通過** /proc/sys/fs/file-max查看一下當前linux的file-max限制,最大是10240

對比一下就知道了,打開的文件數遠遠超出了linux的限制數!
echo 6553560 > /proc/sys/fs/file-max,修改一下最大文件數就行了,改成6553560,然后重啟nginx
再次跑腳本的時候,就沒有返回這些文件錯誤了,但是又返回了新的錯誤:
Connection reset by peer**

未完待續


免責聲明!

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



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