永发信息网

如何调整nginx服务器的性能

答案:1  悬赏:40  手机版
解决时间 2021-04-02 01:57
如何调整nginx服务器的性能
最佳答案
当linux下Nginx达到并发数很高,TCP TIME_WAIT套接字数量经常达到两、三万,这样服务器很容易被拖死。事实上,我们可以简单的通过修改Linux内核参数,可以减少Nginx服务器的TIME_WAIT套接字数量,进而提高Nginx服务器并发性能。

vi /etc/sysctl.conf

增加以下几行:
net.ipv4.tcp_fin_timeout = 30
net.ipv4.tcp_keepalive_time = 1200

net.ipv4.tcp_syncookies = 1
net.ipv4.tcp_tw_reuse = 1
net.ipv4.tcp_tw_recycle = 1
net.ipv4.ip_local_port_range = 1024 65000
net.ipv4.tcp_max_syn_backlog = 8192
net.ipv4.tcp_max_tw_buckets = 5000简单说明:
net.ipv4.tcp_syncookies = 1 表示开启SYN Cookies。当出现SYN等待队列溢出时,启用cookies来处理,可防范少量SYN攻击,默认为0,表示关闭;
net.ipv4.tcp_tw_reuse = 1 表示开启重用。允许将TIME-WAIT sockets重新用于新的TCP连接,默认为0,表示关闭;
net.ipv4.tcp_tw_recycle = 1 表示开启TCP连接中TIME-WAIT sockets的快速回收,默认为0,表示关闭。
net.ipv4.tcp_fin_timeout = 30 表示如果套接字由本端要求关闭,这个参数决定了它保持在FIN-WAIT-2状态的时间。
net.ipv4.tcp_keepalive_time = 1200 表示当keepalive起用的时候,TCP发送keepalive消息的频度。缺省是2小时,改为20分钟。
net.ipv4.ip_local_port_range = 1024 65000 表示用于向外连接的端口范围。缺省情况下很小:32768到61000,改为1024到65000。
net.ipv4.tcp_max_syn_backlog = 8192 表示SYN队列的长度,默认为1024,加大队列长度为8192,可以容纳更多等待连接的网络连接数。
net.ipv4.tcp_max_tw_buckets = 5000 表示系统同时保持TIME_WAIT套接字的最大数量,如果超过这个数字,TIME_WAIT套接字将立刻被清除并打印警告信息。默认为180000,改 为5000。对于Apache、Nginx等服务器,上几行的参数可以很好地减少TIME_WAIT套接字数量,但是对于Squid,效果却不大。此项参 数可以控制TIME_WAIT套接字的最大数量,避免Squid服务器被大量的TIME_WAIT套接字拖死。

echo “====================== 执行以下命令使配置生效:=========================”
#更改linux内核参数后,立即生效的命令!

/sbin/sysctl -p

Nginx优化

使用FastCGI 缓存
fastcgi_cache TEST
开启FastCGI 缓存并且为其制定一个名称。个人感觉开启缓存非常有用,可以有效降低CPU 负载,并且防止502 错误。

fastcgi_cache_path /usr/local/nginx/fastcgi_cache levels=1:2
keys_zone=TEST:10m
inactive=5m;
这个指令为FastCGI 缓存指定一个路径,目录结构等级,关键字区域存储时间和非活动删除时间

其它说明

Nginx 是由 Igor Sysoev 为俄罗斯访问量第二的 Rambler.ru 站点开发的,它已经在该站点运行超过两年半了。Igor 将源代码以类BSD许可证的形式发布。

在高并发连接的情况下,Nginx是Apache服务器不错的替代品。Nginx同时也可以作为7层负载均衡服务器来使用。根据我的测试结 果,Nginx 0.6.31 + PHP 5.2.6 (FastCGI) 可以承受3万以上的并发连接数,相当于同等环境下Apache的10倍。

  根据我的经验,4GB内存的服务器+Apache(prefork模式)一般只能处理3000个并发连接,因为它们将占用3GB以上的内存,还 得为系统预留1GB的内存。我曾经就有两台Apache服务器,因为在配置文件中设置的MaxClients为4000,当Apache并发连接数达到 3800时,导致服务器内存和Swap空间用满而崩溃。

  而这台 Nginx 0.6.31 + PHP 5.2.6 (FastCGI) 服务器在3万并发连接下,开启的10个Nginx进程消耗150M内存(15M*10=150M),开启的64个php-cgi进程消耗1280M内存 (20M*64=1280M),加上系统自身消耗的内存,总共消耗不到2GB内存。如果服务器内存较小,完全可以只开启25个php-cgi进程,这样 php-cgi消耗的总内存数才500M。
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
12v cpu风扇有三条线,红黑白,红和黑直接电
利率互换与货币互换的联系与区别是什么?
刀剑乱舞中no.1是谁
散装香辣酱批发有什么好吃的牌子?
福寿陵园(台州温岭市)地址好找么,我有些事要
PLC与PMC的区别
14岁一米五五八十斤是正常反应还是偏瘦状态
这种遥控飞机怎么用
科学家在青藏高原上发现了古海洋生物的化石说
佛山容桂电信营业厅晚上上班吗
当事人对执凶器入窒行凶者造成轻份二级应当付
人人都说道理 道理 谁能告诉我什么是道理
和谐作文800字
白雪皑皑的近义词是什么
法律上为什么官衔可以抵罪
推荐资讯
自如服务费我交了、又新住一人还需要交吗
沙色雪地靴好吗?比起UGG来怎么样?
神州农家乐这个地址在什么地方,我要处理点事
问本小说,男主叫陆衍女主叫甄意意
新版MT4为什么不能使用双线MACD
求算卦 属马的男性和属鼠的女性婚姻和的来吗
洋葱数学怎么改个人资料
遥感图像中提到的AVHRR/3是什么?
朋友圈里的广告小视频是用什么手机软件制作的
用心填词的薛之谦用声音打动人,你会喜欢他吗
徐工25吨吊车伸杆钢丝绳多长时间换一次
武汉算二线城市?
正方形一边上任一点到这个正方形两条对角线的
阴历怎么看 ?