网站首页 > 技术教程 正文
一、编译安装过程优化
1.减小Nginx编译后的文件大小
在编译Nginx时,默认以debug模式进行,而在debug模式下会插入很多跟踪和ASSERT之类的信息,编译完成后,一个Nginx要有好几兆字节。在编译前取消Nginx的debug模式,编译完成后Nginx只有几百千字节,因此可以在编译之前,修改相关源码,取消debug模式,具体方法如下:
在Nginx源码文件被解压后,找到源码目录下的auto/cc/gcc文件,在其中找到如下几行:
1 # debug 2 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"
二、Nginx内核参数优化
内核参数的优化,主要是在Linux系统中针对Nginx应用而进行的系统内核参数优化,常见的优化参数值如下。
下面给出一个优化实例以供参考:
1 net.ipv4.tcp_max_tw_buckets = 65535 2 net.ipv4.ip_local_port_range = 1024 65000 3 net.ipv4.tcp_tw_recycle = 1 4 net.ipv4.tcp_tw_reuse = 1 5 net.ipv4.tcp_syncookies = 1 6 net.core.somaxconn = 262144 7 net.core.netdev_max_backlog = 262144 8 net.ipv4.tcp_max_orphans = 262144 9 net.ipv4.tcp_max_syn_backlog = 262144 10 net.ipv4.tcp_synack_retries = 1 11 net.ipv4.tcp_syn_retries = 1 12 net.ipv4.tcp_fin_timeout = 1 13 net.ipv4.tcp_keepalive_time = 30
将上面的内核参数值加入/etc/sysctl.conf文件中,然后执行如下命令使之生效:
[root@ localhost /etc]#/sbin/sysctl -p
下面是对实例中选项的含义进行介绍:
参数用来设定timewait的数量,默认是180000,这里设为65535。
? net.ipv4.tcp_max_tw_buckets
选项用来设定允许系统打开的端口范围。
? net.ipv4.ip_local_port_range
选项用于设置启用timewait快速回收。
? net.ipv4.tcp_tw_recycle
选项用于设置开启重用,允许将TIME-WAIT sockets重新用于新的TCP连接。
? net.ipv4.tcp_tw_reuse
选项用于设置开启SYN Cookies,当出现SYN等待队列溢出时,启用cookies进行处理。
? net.ipv4.tcp_syncookies
选项默认值是128, 这个参数用于调节系统同时发起的tcp连接数,在高并发的请求中,默认的值可能会导致链接超时或者重传,因此,需要结合并发请求数来调节此值。
? net.core.somaxconn
选项表示当每个网络接口接收数据包的速率比内核处理这些包的速率快时,允许发送到队列的数据包的最大数目。
? net.core.netdev_max_backlog
选项用于设定系统中最多有多少个TCP套接字不被关联到任何一个用户文件句柄上。如果超过这个数字,孤立连接将立即被复位并打印出警告信息。这个限制只是为了防止简单的DoS攻击。不能过分依靠这个限制甚至人为减小这个值,更多的情况是增加这个值。
? net.ipv4.tcp_max_orphans
选项用于记录那些尚未收到客户端确认信息的连接请求的最大值。对于有128MB内存的系统而言,此参数的默认值是1024,对小内存的系统则是128。
? net.ipv4.tcp_max_syn_backlog
参数的值决定了内核放弃连接之前发送SYN+ACK包的数量。
? net.ipv4.tcp_synack_retries
选项表示在内核放弃建立连接之前发送SYN包的数量。
? net.ipv4.tcp_syn_retries
选项决定了套接字保持在FIN-WAIT-2状态的时间。默认值是60秒。正确设置这个值非常重要,有时候即使一个负载很小的Web服务器,也会出现因为大量的死套接字而产生内存溢出的风险。
? net.ipv4.tcp_fin_timeout
选项表示当keepalive启用的时候,TCP发送keepalive消息的频度。默认值是2(单位是小时)。
? net.ipv4.tcp_keepalive_time
猜你喜欢
- 2024-09-22 Web性能优化方案(web性能优化方法)
- 2024-09-22 Nginx性能优化策略(nginx性能优化 博客)
- 2024-09-22 服务器性能优化的8种常用方法(服务器优化是什么意思)
- 2024-09-22 「性能调优」NGINX的性能调优宝典
- 2024-09-22 面试题:为什么 Nginx 不使用多线程?常见的优化手段有哪些?
- 2024-09-22 18、Nginx-配置优化(nginx优化方案)
- 2024-09-22 深入浅析nginx部署及简单优化(nginx部署web应用)
- 2024-09-22 Nginx高并发下的优化(nginx 并发优化)
- 2024-09-22 面试题解|Nginx 是如何实现高并发?常见的优化手段有哪些?
- 2024-09-22 ngixn服务器如何进行性能优化呢(ngrok服务器搭建)
你 发表评论:
欢迎- 最近发表
-
- Win10 TH2正式版官方ESD映像转换ISO镜像方法详解
- 使用iso镜像升级到Windows 10的步骤
- macOS Ventura 13.2 (22D49) Boot ISO 原版可引导镜像
- 安利一个用ISO镜像文件制作引导U盘的的小工具RUFUS
- CentOS 7使用ISO镜像配置本地yum源
- 用于x86平台的安卓9.0 ISO镜像发布下载:通吃I/A/N、完全免费
- AlmaLinux 9.6发布:升级工具、初步支持IBM Power虚拟化技术
- Rufus写入工具简洁介绍与教程(写入模式)
- 新硬件也能安装使用了,Edge版Linux Mint 21.3镜像发布
- 开源工程师:Ubuntu应该抛弃32位ISO镜像
- 标签列表
-
- 下划线是什么 (87)
- 精美网站 (58)
- qq登录界面 (90)
- nginx 命令 (82)
- nginx .http (73)
- nginx lua (70)
- nginx 重定向 (68)
- Nginx超时 (65)
- nginx 监控 (57)
- odbc (59)
- rar密码破解工具 (62)
- annotation (71)
- 红黑树 (57)
- 智力题 (62)
- php空间申请 (61)
- 按键精灵 注册码 (69)
- 软件测试报告 (59)
- ntcreatefile (64)
- 闪动文字 (56)
- guid (66)
- abap (63)
- mpeg 2 (65)
- column (63)
- dreamweaver教程 (57)
- excel行列转换 (56)
本文暂时没有评论,来添加一个吧(●'◡'●)