阿里云nginx性能调优

本文以Linux Centos7.2为例,介绍了将Nginx性能发挥到极致的配置方法。指出Nginx响应瓶颈主要在建立更多socket连接和打开更多文件。具体包括提高socket连接数,如修改最大连接数、加快tcp回收等,以及文件系统方面的优化,如操作系统优化和配置子进程可打开文件数。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

前言:nginx是一个高效的http和反向代理的web服务器,是实现web应用程序高效的居家必备的产品。但是如果想要把nginx的性能发挥到极致,还是需要进行一些配置。nginx响应的过程大致如下:

由图片可知,瓶颈主要在于2个地方,建立更多的socket连接,打开更多的文件。

服务器篇以linux   centos7.2为例

一 提高socket连接数

  1.1 socket最大连接数修改

这里的文件是进程文件,正在运行中,所以不能使用vim编辑器进行修改
系统的默认值为128 这里改为50000
echo 50000 > /proc/sys/net/core/somaxconn

  1.2 加快系统的tcp回收

tcp 连接断开后还会存活一段时间,系统默认为0  ,这里修改为1 
此数值请不要修改
echo  1 > /proc/sys/net/ipv4/tcp_tw_recycle

  1.3 允许空的tcp回收

系统默认为0 ,  这里修改为1
echo 1 > /proc/sys/net/ipv4/tcp_tw_reuse 

      1.4 关闭系统的洪水抵御防护

正常情况下,当系统收到大量的重复请求时,系统会认为攻击,会在响应头中加入cookie信息,但我们这是高并发请求并不是攻击
系统默认为1  修改为0
echo 0 > /proc/sys/net/ipv4/tcp_syncookie

2 nginx的配置

   2.1 修改nginx子进程运行打开的连接数


表示能打开的连接数,默认为1024,修改为10000
events {
    worker_connections  10000;
}

二 文件系统方面的优化

1 操作系统方面的优化

     

把操作系统允许打开文件的最大值设为10240,原本的默认值是1024
ulimit -n 10240; 

2 配置nginx子进程可以打开的文件数

work_limit_nofile 10240

### 苍穹外卖项目在阿里云平台第三天遇到的问题及解决方案 #### 部署过程中Docker容器网络配置问题 在将应用部署至阿里云的过程中,可能会遇到不同服务之间的通信问题。由于各个微服务(如Nginx、Redis、MySQL)都运行于各自的Docker容器内,因此需要确保这些容器能够相互通信并访问外部资源。 为了实现这一点,建议创建自定义的Docker网络模式,并让所有相关联的服务加入该网络。这可以通过`docker-compose.yml`文件来简化操作,在其中指定统一的网络名称和服务间的链接关系[^3]: ```yaml version: '3' services: nginx: image: nginx:latest networks: - app-network redis: image: redis:alpine networks: - app-network mysql: image: mysql:8.0 environment: MYSQL_ROOT_PASSWORD: example networks: - app-network networks: app-network: ``` #### Spring Task定时任务执行失败 根据业务需求,需定期处理特定状态下的订单记录。然而,在实际运行中发现Spring Task未能按预期触发定时任务。此类情况通常由以下几个原因引起: - **Cron表达式错误**:确认cron表达式的准确性对于保证任务按时执行至关重要。例如,用于每日凌晨一点执行的任务应设置为`0 0 1 * * ?`。 - **线程池配置不当**:默认情况下,Spring Boot应用程序中的度器使用单一线程池。如果多个任务并发量较大,则可能导致某些任务被延迟甚至错过执行时机。适当整线程池大小有助于提高效率[^4]。 针对上述问题,可以在application.properties或yml文件中增加如下配置项以性能表现: ```properties spring.task.scheduling.pool.size=5 # 设置线程池大小为5 ``` 此外,还需注意检查日志输出,排查是否有异常堆栈信息影响了任务正常启动。 #### 数据库连接不稳定 随着流量增长,数据库连接数逐渐增多,可能出现连接超时或者断开的现象。对此可采取以下措施加以改善: - 增加最大允许连接数量; - 实施读写分离策略减轻主库压力; - 启用缓存机制减少不必要的查询请求次数; 具体实施方法取决于所使用的ORM框架以及具体的业务场景。对于本案例而言,考虑到采用了MyBatis作为持久层组件,可在mybatis-config.xml或其他相应位置添加必要的参数语句。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值