lnmp 并发性能优化

阅读 (60)
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

留言

发表评论

标记为*的字段是必填项(邮箱地址不会被公开), 由于国内舆论控制, 评论需要管理员审核通过方可展示

返回顶部