关于对Nginx和MySQL的性能配置优化【测试成功】

:2024年08月21日 巴韭特锁螺丝
分享到:

文章讲述了关于Nginx和MySQL的性能配置优化。文章首先介绍了问题背景,然后介绍了Nginx启动时的错误提示,表明worker_connections超出了系统的文件描述符限制。

关于对Nginx和MySQL的性能配置优化【测试成功】

原创 巴韭特锁螺丝 巴韭特锁螺丝  2024年08月21日 00:00 陕西

一、问题背景

  在14核心、64G内存的服务器运行业务系统,用户普遍反馈加载卡顿,且CPU占用很高,将其扩容到40核心CPU,其他不变。调整对应程序参数。

二、Nginx配置优化

 1、nginx 启动时提示 file resource limit

[root@cheliangweb mysql]# nginx

nginx: [warn] 100000 worker_connections exceed open file resource limit: 1024

    这个警告表示 Nginx 的工作进程数 worker_connections 超过了系统的文件描述符限制。Nginx 在处理并发连接时需要使用文件描述符,而文件描述符的数量受到系统的限制。

解决:

   (1)查看系统文件描述符限制:ulimit -n

    如果限制较低,需要修改系统的文件描述符限制。这可以在用户的 shell 配置文件(例如 ~/.bashrc 或 /etc/security/limits.conf)中进行设置。

        ulimit -n 4096

  (2) 修改 Nginx 配置:

        找到worker_connections参数,并确保其值不超过文件描述符限制。

   (3)重启Nginx

 2、nginx线程与连接优化

    (1)启用 Keep-Alive参数:

            keepalive_timeout 65;

    (2)合理配置worker_processes 参数

        这个值的设定应该根据服务器的硬件配置和工作负载来合理选择。并不是越大越好,而是要根据具体情况进行调优。

       CPU 核数: 通常,可以将 worker_processes 设置为等于服务器的 CPU 核数,以充分利用服务器的多核性能。服务器有超线程(Hyper-Threading)技术,可以考虑将其设置为实际物理核心数的一半。

       并发连接数: 考虑到每个 Nginx 工作进程能够处理的并发连接数,根据预计的并发请求量适度调整。可以通过以下公式估算:

        worker_connections 参数用于配置每个 Nginx 工作进程能够处理的最大并发连接数

        并发连接数 = worker_processes * worker_connections

三、Mysql配置优化

    重要性能参数优化:

    innodb_buffer_pool_size:

  • 这个参数决定了 InnoDB 存储引擎使用的内存缓冲池大小。通常建议将其设置为物理内存的 50-75%。

  • 例如,如果服务器有 16GB 的内存,可以设置为 innodb_buffer_pool_size = 12GB。

innodb_log_file_size:

  • 这个参数决定了 InnoDB 存储引擎的事务日志文件大小。一般建议设置为 1GB 或更大。

  • 例如,可以设置为 innodb_log_file_size = 1GB。

query_cache_size:

  • 该参数控制查询缓存的大小。对于高写入负载的数据库,建议将其设置为 0,因为查询缓存在高并发写入场景下性能不佳。

  • 对于读密集型的数据库,可以考虑启用查询缓存,并设置一个适当的大小。通常,可以设置为物理内存的一小部分,例如 query_cache_size = 256MB。

示例:服务器CPU核心数40,64G内存,1000M带宽,这些参数应该怎么设置?

在具有40个CPU核心和64GB内存的服务器上,以下是MySQL配置参数的一些推荐设置。请注意,这些只是一般的建议,实际的最佳值可能会根据你的具体应用和工作负载有所不同。

1. **innodb_buffer_pool_size**:这是InnoDB存储引擎用于缓存数据和索引的内存大小。对于专用的MySQL服务器,通常将此值设置为系统内存的70-80%。可以设置为44GB(约等于64GB的70%)。

2. **innodb_log_file_size**:这是InnoDB存储引擎的重做日志文件大小。一个常见的建议是将其设置为innodb_buffer_pool_size的25%。可以设置为11GB。

3. **innodb_flush_log_at_trx_commit**:这个参数决定了InnoDB存储引擎何时将日志刷新到磁盘。如果需要最高的数据持久性,可以将其设置为1。可以接受在崩溃时丢失一秒钟的事务,可以将其设置为2,这通常可以提供更好的性能。

4. **query_cache_size**:这是查询缓存的大小。然而,对于具有大量内存的服务器,查询缓存可能会成为性能瓶颈。在许多情况下,最好将query_cache_size设置为0,以禁用查询缓存。

5. **max_connections**:这是MySQL服务器允许的最大并发连接数。这个值取决于你的应用程序的并发需求。一个常见的开始值是100,但你可能需要根据你的应用程序的需求进行调整。

6. **thread_cache_size**:这是线程缓存的大小。一个常见的建议是将其设置为max_connections的10%。在你的情况下,如果max_connections设置为100,那么thread_cache_size可以设置为10。

7. **table_open_cache**:这是表缓存的大小。一个常见的建议是将其设置为max_connections的2倍。在你的情况下,如果max_connections设置为100,那么table_open_cache可以设置为200。

8. **sort_buffer_size**:每个线程进行排序操作时所使用的缓冲区大小。默认值通常就足够了,除非你的应用程序执行了大量的复杂排序。

djEvbE1JVGtldUNKeHNzOUkzRkNhbGFUY3I3NzhtU1RpMHd1ZEE3Zkx6VS04VjQzN0hfSHdLbENCNHpDdFRrMzI1VlROSUJkemZ0QlljZG1DNjJfcGdTYTFfNl9ya2oxaXk1bVZqR01XNzhoSjQ9.jpg

[我要纠错]
文:宋聪乔&发表于江苏
关键词: 关于 Nginx MySQL 性能 配置

来源:本文内容搜集或转自各大网络平台,并已注明来源、出处,如果转载侵犯您的版权或非授权发布,请联系小编,我们会及时审核处理。
声明:江苏教育黄页对文中观点保持中立,对所包含内容的准确性、可靠性或者完整性不提供任何明示或暗示的保证,不对文章观点负责,仅作分享之用,文章版权及插图属于原作者。

点个赞
0
踩一脚
0

您在阅读:关于对Nginx和MySQL的性能配置优化【测试成功】

Copyright©2013-2024 JSedu114 All Rights Reserved. 江苏教育信息综合发布查询平台保留所有权利

苏公网安备32010402000125 苏ICP备14051488号-3技术支持:南京博盛蓝睿网络科技有限公司

南京思必达教育科技有限公司版权所有   百度统计

最热文章
最新文章
  • 卡尔蔡司镜片优惠店,镜片价格低
  • 苹果原装手机壳