记录一次最近公司SEO优化压测,以前所有页面上的数据都是通过JS获取的,这样会有一个问题,就是SEO不友好,所以就增加了一层Node,接口请求放在了Node里,通过Node渲染页面后返回给浏览器。因为是一次比较大的改版,所以在测试环境进行了一次性能压测,当然测试环境机器有限,是按比例缩小进行压力测试。中间出现了几个问题,印象最深刻的就是Nginx最大连接数了。最开始因为对Nginx高性能的信任,所以没往这方面想。
通过查看Node请求日志发现一些接口报50x错误,但Java日志并没有相关错误日志,偶然发现Nginx上有记录异常信息,报了很多的 open too many files 错误,Socket在Linux中也是一个文件,也受Linux的最大打开文件数限制。通过 ulimit -n 查看到测试环境上配置是默认的1024,这自然是远远不够的。
通过修改 /etc/security/limits.conf 增加到65535,重新登录后虽然 ulimit -n 显示的是变了,但还是继续报这个错,后来才知道该配置需重启服务器才生效,重启服务器太麻烦