问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

您好,我的论坛linux nginx服务器 速度有些慢,请问有优化方法吗

发布网友 发布时间:2022-04-30 00:01

我来回答

2个回答

热心网友 时间:2022-05-04 14:32

一、编译安装过程优化

1.减小Nginx编译后的文件大小
在编译Nginx时,默认以debug模式进行,而在debug模式下会插入很多跟踪和ASSERT之类的信息,编译完成后,一个Nginx要有好几兆字
节。在编译前取消Nginx的debug模式,编译完成后Nginx只有几百千字节,因此可以在编译之前,修改相关源码,取消debug模式,具体方法如
下:
在Nginx源码文件被解压后,找到源码目录下的auto/cc/gcc文件,在其中找到如下几行:
# debug CFLAGS=”$CFLAGS -g”

注释掉或删掉这两行,即可取消debug模式。

2.为特定的CPU指定CPU类型编译优化
在编译Nginx时,默认的GCC编译参数是“-O”,要优化GCC编译,可以使用以下两个参数:
--with-cc-opt='-O3'
--with-cpu-opt=CPU #为特定的 CPU 编译,有效的值包括:pentium, pentiumpro, pentium3, pentium4, athlon, opteron, amd64, sparc32, sparc64, ppc64
要确定CPU类型,可以通过如下命令:
[root@localhost home]#cat /proc/cpuinfo | grep "model name"

二、利用TCMalloc优化Nginx的性能
TCMalloc的全称为Thread-Caching
Malloc,是谷歌开发的开源工具“google-perftools”中的一个成员。与标准的glibc库的malloc相比,TCMalloc库在
内存分配效率和速度上要高很多,这在很大程度上提高了服务器在高并发情况下的性能,从而降低系统负载。下面简单介绍如何为Nginx添加TCMalloc
库支持。
要安装TCMalloc库,需要安装libunwind(32位操作系统不需要安装)和google-perftools两个软件包,libunwind
库为基于64位CPU和操作系统的程序提供了基本函数调用链和函数调用寄存器功能。下面介绍利用TCMalloc优化Nginx的具体操作过程:

1.安装libunwind库
可以从http://download.savannah.gnu.org/releases/libunwind下载相应的libunwind版本,这里下载的是libunwind-0.99-alpha.tar.gz,安装过程如下:

[root@localhost home]#tar zxvf libunwind-0.99-alpha.tar.gz [root@localhost home]# cd libunwind-0.99-alpha/ [root@localhost libunwind-0.99-alpha]#CFLAGS=-fPIC ./configure [root@localhost libunwind-0.99-alpha]#make CFLAGS=-fPIC [root@localhost libunwind-0.99-alpha]#make CFLAGS=-fPIC install

2.安装google-perftools
可以从http://google-perftools.googlecode.com下载相应的google-perftools版本,这里下载的是google-perftools-1.8.tar.gz,安装过程如下:

[root@localhost home]#tar zxvf google-perftools-1.8.tar.gz [root@localhost home]#cd google-perftools-1.8/ [root@localhost google-perftools-1.8]# ./configure [root@localhost google-perftools-1.8]#make && make install [root@localhost google-perftools-1.8]#echo "/usr/local/lib" > /etc/ld.so.conf.d/usr_local_lib.conf [root@localhost google-perftools-1.8]# ldconfig

至此,google-perftools安装完成。

3.重新编译Nginx
为了使Nginx支持google-perftools,需要在安装过程中添加“–with-google_perftools_mole”选项重新编译Nginx,安装代码如下:

[root@localhostnginx-0.7.65]#./configure \ >--with-google_perftools_mole --with-http_stub_status_mole --prefix=/opt/nginx [root@localhost nginx-0.7.65]#make [root@localhost nginx-0.7.65]#make install

到这里Nginx安装完成。

4.为google-perftools添加线程目录
创建一个线程目录,这里将文件放在/tmp/tcmalloc下,操作如下:

[root@localhost home]#mkdir /tmp/tcmalloc [root@localhost home]#chmod 0777 /tmp/tcmalloc

5.修改Nginx主配置文件
修改nginx.conf文件,在pid这行的下面添加如下代码:

#pid logs/nginx.pid; google_perftools_profiles /tmp/tcmalloc;

接着,重启Nginx,完成google-perftools的加载。

6.验证运行状态
为了验证google-perftools已经正常加载,通过如下命令查看:

[root@ localhost home]# lsof -n | grep tcmalloc nginx 2395 nobody 9w REG 8,8 0 1599440 /tmp/tcmalloc.2395 nginx 2396 nobody 11w REG 8,8 0 1599443 /tmp/tcmalloc.2396 nginx 2397 nobody 13w REG 8,8 0 1599441 /tmp/tcmalloc.2397 nginx 2398 nobody 15w REG 8,8 0 1599442 /tmp/tcmalloc.2398

由于在Nginx配置文件中,设置worker_processes的值为4,因此开启了4个Nginx线程,每个线程会有一行记录。每个线程文件后面的数字值就是启动的Nginx的PID值。
至此,利用TCMalloc优化Nginx的操作完成。

三、Nginx内核参数优化
内核参数的优化,主要是在Linux系统中针对Nginx应用而进行的系统内核参数优化,常见的优化参数值如下。
下面给出一个优化实例以供参考:
net.ipv4.tcp_max_tw_buckets = 6000 net.ipv4.ip_local_port_range = 1024 65000 net.ipv4.tcp_tw_recycle = 1 net.ipv4.tcp_tw_reuse = 1 net.ipv4.tcp_syncookies = 1 net.core.somaxconn = 262144 net.core.netdev_max_backlog = 262144 net.ipv4.tcp_max_orphans = 262144 net.ipv4.tcp_max_syn_backlog = 262144 net.ipv4.tcp_synack_retries = 1 net.ipv4.tcp_syn_retries = 1 net.ipv4.tcp_fin_timeout = 1 net.ipv4.tcp_keepalive_time = 30
将上面的内核参数值加入/etc/sysctl.conf文件中,然后执行如下命令使之生效:
[root@ localhost home]#/sbin/sysctl -p
下面是对实例中选项的含义进行介绍:
 net.ipv4.tcp_max_tw_buckets参数用来设定timewait的数量,默认是180000,这里设为6000。
 net.ipv4.ip_local_port_range选项用来设定允许系统打开的端口范围。
 net.ipv4.tcp_tw_recycle选项用于设置启用timewait快速回收。
 net.ipv4.tcp_tw_reuse选项用于设置开启重用,允许将TIME-WAIT sockets重新用于新的TCP连接。
 net.ipv4.tcp_syncookies选项用于设置开启SYN Cookies,当出现SYN等待队列溢出时,启用cookies进行处理。
 net.core.somaxconn选项默认值是128, 这个参数用于调节系统同时发起的tcp连接数,在高并发的请求中,默认的值可能会导致链接超时或者重传,因此,需要结合并发请求数来调节此值。
 net.core.netdev_max_backlog选项表示当每个网络接口接收数据包的速率比内核处理这些包的速率快时,允许发送到队列的数据包的最大数目。
 net.ipv4.tcp_max_orphans选项用于设定系统中最多有多少个TCP套接字不被关联到任何一个用户文件句柄上。如果超过这个数
字,孤立连接将立即被复位并打印出警告信息。这个*只是为了防止简单的DoS攻击。不能过分依靠这个*甚至人为减小这个值,更多的情况是增加这个值。
 net.ipv4.tcp_max_syn_backlog选项用于记录那些尚未收到客户端确认信息的连接请求的最大值。对于有128MB内存的系统而言,此参数的默认值是1024,对小内存的系统则是128。
 net.ipv4.tcp_synack_retries参数的值决定了内核放弃连接之前发送SYN+ACK包的数量。
 net.ipv4.tcp_syn_retries选项表示在内核放弃建立连接之前发送SYN包的数量。
 net.ipv4.tcp_fin_timeout选项决定了套接字保持在FIN-WAIT-2状态的时间。默认值是60秒。正确设置这个值非常重要,有时候即使一个负载很小的Web服务器,也会出现因为大量的死套接字而产生内存溢出的风险。
 net.ipv4.tcp_keepalive_time选项表示当keepalive启用的时候,TCP发送keepalive消息的频度。默认值是2(单位是小时)。

热心网友 时间:2022-05-04 15:50

你的信息太少了
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
成都汇众益智游戏学院怎么样 为什么苹果手机屏幕老是自动滚上去? roughness test什么意思 国家标准打印纸为每包500张,小雨同学家里新买—包打印 纸,她想练习... 谁知道卡布奇诺含义 卡布奇诺咖啡历史 电脑针式打印纸有哪些规格? 外籍人才招聘 接种甲肝疫苗会出现什么不良反应 中华人民共和国境内的任何人均应接种哪些疫苗 帮男朋友庆祝生日怎么布置房间? 书荒,推荐点好看的言情小说吧 有没有一个穿越小说,讲的是一个女孩穿越到守护甜心里,充当歌呗的妹妹 怎么给男的布置一个浪漫的生日场合 推荐几部言情小说吧 我要看言情小说 哪有免费的言情小说可以看呀,网址有吗? 好看的言情小说有那些可以帮我推荐推荐的 word转pdf 谁能给我个网址,在线转换? 我想知道现在可以在哪看言情小说啊?要免费的 帮我推荐几本在线阅读的言情小说吧! 有没有言情小说网站 帮我找一下初二英语上册(新目标)第2单元的重点单词、词组好吗? 在哪里能看到免费的全篇的言情小说啊? 如何免费阅读言情小说吧里的收费小说 八年级上册英语一二单元单词 山东教育出版社 将WORD文档转成PDF档时,PDF文档的左下角会有PDF的网址,请问怎样去掉? 求人教版新目标英语八年级上册指导丛书二单元的重点单词.短语加句子. 江苏无锡版苏教版八年级上册英语第二单元单词 无言之月第5集发生了什么 在哪里可以看言情小说啊? Nginx的优化所指的内核是哪个配置文件 适合女女看的言情小说 求将word转化为PDF软件的网址 推荐几本大家认为好看的言情小说吧 手术去痣会留疤痕吗 服务器500错误,服务器是Nginx的。 502 Bad Gateway nginx/1.4.6 怎么解决 电动车仪表怎么接线,有个红白色的线是干嘛用的? 电动三轮车液晶仪表板上白色单插线是什么功能? 电动车仪表怎么接线? 腰椎变形,怎么办才好?用什么产品啊? 不用手机号码可以注册吗? 一般都用什么壳包糯米? 男生发个性签名“总之就是那么可爱”是什么意思? 腰椎变形严重,是否可以有效缓解? 没有手机号可以注册吗? 总之就是非常可爱,有哪些高分台词? 腰椎变形该怎么办? 腰椎变形哪里能治?