lnmp 并发性能优化
阅读 (137) 2020-07-31 11:11:16
lnmp 并发性能优化
nginx层面
//nginx.conf 中配置
worker_rlimit_nofile 10000; //子进程允许打开的文件数
events{
worker_connections 10240;
http {
keepalive_timeout 0; //结束响应后立即断开tcp连接。
//keeplive_timeout 表示tcp完成响应后,继续保持连接多久。如果这个值过大,会造成资源无效占用。
}
}
系统层面
echo 500000 > /proc/sys/net/core/somaxconn //设置最大连接数
echo 1 > /proc/sys/net/ipv4/tcp_tw_recycle //加快tcp回收
echo 1 > /proc/sys/net/ipv4/tcp_tw_reuse //空的tcp允许回收利用
echo 0 > /proc/sys/net/ipv4/tcp_syncookies //关闭洪水抵御
ulimit -n 30000
性能优化有很多方面,比较复杂,要综合来判断
举个例子:nginx 如果开200线程,那么能同时处理200个并发请求
但前端调用一个接口,响应时间是50ms,如果一个请求平均只需要50ms,那么一秒就能抗200*20 差不多4000并发,
但如果响应时间500ms,那每秒就只能完成200*2,400左右并发
响应时间 50ms 或者 500ms 取决于代码逻辑,例如50ms的接口查询比较简单,CPU, 内存又足够的情况。
但也有可能 CPU 或者内存影响了程序处理速度,响应时间就慢了,也可能代码中有大量计算拖慢了响应时间,原因有很多,需要慢慢优化,不断改进。而不是简单粗暴的认为8核16G内存的服务器能抗多少并发。
又例如程序接口中redis取个值返回到前台可能需要10ms,如果是你在一个循环里面去调用,调用10次的话,那一下子就变成了100ms,这就造成了10倍的差距。
更新于:2020-07-31 15:28:57