ubuntu + nginx 1.26 + php7.4 + mysql8.0 调优

服务器配置 8核 16G

查看内存 free -h

nginx配置

worker_processes auto;          # 自动检测CPU核心数
worker_rlimit_nofile 65535;     # 提高文件描述符限制
​
events {worker_connections 8192;    # 每个worker的最大连接数multi_accept on;            # 一次性接受所有连接use epoll;                  # 使用epoll事件模型
}
​
http {include mime.types;default_type application/octet-stream;sendfile on;                # 高效文件传输tcp_nopush on;              # 减少网络包数量tcp_nodelay on;             # 实时数据传输keepalive_timeout 65;       # 长连接超时时间server_tokens off;          # 隐藏Nginx版本信息# Gzip压缩gzip on;gzip_types text/plain text/css application/json application/javascript text/xml application/xml application/xml+rss text/javascript;# 虚拟主机配置include /etc/nginx/conf.d/*.conf;include /etc/nginx/sites-enabled/*;
}

mysql数据库调优

基本配置

[mysqld]
# 基础设置
# 仅本地访问
bind-address = 127.0.0.1    
port = 3306
character-set-server = utf8mb4
collation-server = utf8mb4_unicode_ci
# 最大连接数
max_connections = 300        
# 连接超时时间
wait_timeout = 600           
​
# 内存分配 (约占总内存的60%)
# InnoDB缓冲池大小
innodb_buffer_pool_size = 6G  
# 日志文件大小
innodb_log_file_size = 512M  
# MyISAM索引缓冲区
key_buffer_size = 128M          
#排序操作缓冲区大小 推荐值:1M-8M,根据服务器内存和查询复杂度调整 如从 2M 逐步增加到 4M、8M
sort_buffer_size = 4M          
# 随机读缓冲区       
read_rnd_buffer_size = 4M          
# JOIN操作缓冲区       
join_buffer_size = 4M         
​
# 性能优化
# 平衡性能与安全性
innodb_flush_log_at_trx_commit = 2   
# 二进制日志同步频率
sync_binlog = 100                     
# IOPS估计值
innodb_io_capacity = 2000            
# 读IO线程数
innodb_read_io_threads = 8           
# 写IO线程数
innodb_write_io_threads = 8          
# 线程并发数
innodb_thread_concurrency = 16
​
# 在【mysqld】下加入以下配置(解决group by报错解决)
sql_mode=STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION
group_concat_max_len = 102400
# 时区设置
default-time_zone = '+8:00'

开启缓慢sql日志

# 启用慢查询日志
slow_query_log = 1
# 慢查询日志文件路径
slow_query_log_file = /var/log/mysql/mysql-slow.log
# 设置慢查询时间阈值(单位:秒)
long_query_time = 3
# 记录未使用索引的查询
log_queries_not_using_indexes = 1

php-fmp 配置优化

基础配置

计算最大进程数# 计算平均php进程平均内存
ps -ylC php-fpm7.4 --sort:rss | awk '{sum+=$8; n++} END {print "平均内存(KB): " sum/n}'
# 计算最大进程数  PHP-FPM + MySQL 总内存建议控制在 12GB 左右(留 4GB 给系统)
# 可用内存(MB) ÷ 单个进程内存(MB) = 最大进程数

配置 /etc/php/7.4/fpm/pool.d/www.conf

[www]
pm = dynamic
; (1024MB*6) ÷ 32MB ≈ 192(pm.max_children值)
pm.max_children = 190      
; 初始进程数
pm.start_servers = 20     
; 最小空闲进程数
pm.min_spare_servers = 10  
; 最大空闲进程数
pm.max_spare_servers = 30    
; 空闲进程超时时间
pm.process_idle_timeout = 10s 
; 单个请求最大执行时间(秒)
request_terminate_timeout = 30 
; 慢请求日志阈值
request_slowlog_timeout = 5s  
; 慢请求日志路径
slowlog = /var/log/php7.4-fpm-slow.log 
; 提高文件描述符限制
rlimit_files = 65535      
    

启用 OPcache 默认启动

[opcache]
opcache.enable=1
opcache.enable_cli=1
opcache.memory_consumption=128
opcache.interned_strings_buffer=8
opcache.max_accelerated_files=10000
opcache.validate_timestamps=1
opcache.revalidate_freq=1
opcache.fast_shutdown=1

压力测试 ApacheBench

安装

sudo apt install apache2-utils# 模拟1个客户端请求100次:
ab -n 100 http://www.example.com/# 模拟100个客户端请求10000次:
ab -n 10000 -c 100 http://www.example.com/# 调用POST方法的接口10次,传输的数据格式为JSON:
ab -n 10 -p json-file http://www.example.com/# 调用OPTIONS方法的接口10次:
ab -n 10 -m OPTIONS http://www.example.com/# 输出每次请求的返回信息:
ab -n 10 -v 2 http://www.example.com/

测试效果显著

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.pswp.cn/bicheng/84548.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

[未验证]abaqus2022 更改内置python

如何在 Abaqus 2022 中更改内置 Python 在 Abaqus 中,Python 是常用的脚本语言,它使得用户能够自动化模型的创建、分析和后处理。可能有时候你需要更改默认的 Python 版本,比如使用特定库或者功能。本文将为您详细说明如何在 Abaqus 2022 中更…

RAG文档解析难点2:excel数据“大海捞针”,超大Excel解析与精准行列查询指南

写在前面 在构建检索增强生成(RAG)应用时,Excel文件是不可或缺的数据源。它们通常包含了企业运营、市场分析、科学研究等各个领域的宝贵数据。然而,当这些Excel文件变得“超大”——可能包含数十万甚至数百万行数据时,传统的解析方法和RAG数据处理流程将面临严峻的内存、…

深度掌控,智启未来 —— 基于 STM32F103RBT6 的控制板

在科技浪潮奔涌向前的时代,电子领域的创新发展从未停歇。对于电子工程师、科研工作者以及电子技术爱好者,在校电子专业学生而言,一款性能卓越、功能全面且稳定可靠的开发板,是探索电子世界奥秘、实现创意构想的关键基石。今天&…

什么样的登录方式才是最安全的?

目录 一、基础协议:HTTP与HTTPS HTTP协议 HTTPS协议 二、常见Web攻击与防御 2.1 XSS 常见攻击手段 针对XSS 攻击窃取 Cookie 2.2 CSRF CSRF攻击的核心特点 与XSS的区别 常见防御措施 三、疑问解答 四、登录方式演变 4.1 方案一🐶狗都不用 …

android studio底部导航栏

实现底部导航栏切换 将java文件return的xml文件赋值给页面FrameLayout控件 java文件BottomNavigationView,监听器setOnNavigationItemSelectedListener MainActivity.java代码 package com.example.myapplication;import android.os.Bundle;import androidx.appc…

vue-router相关理解

一、前言 随着 Vue.js 在前端开发中的广泛应用,Vue Router 成为了 Vue 官方推荐的路由管理器。它不仅支持单页面应用(SPA)中常见的路由跳转、嵌套路由、懒加载等功能,还提供了导航守卫、动态路由等高级特性。 本文将带你深入了解…

uni-app 自定义路由封装模块详解(附源码逐行解读)

🚀uni-app 自定义路由封装模块详解(附源码逐行解读) 📌 请收藏 点赞 关注,获取更多 uni-app 项目实用技巧! 在实际 uni-app 项目中,我们常常需要对 uni.navigateTo、uni.switchTab 等 API 做…

QML显示图片问题解决办法

以前用qtwediget的时候,好像是放在qlabel或者什么组件上面,把图片的路径放上去就可以直接加载,但我用QML创建界面的时候就遇到了问题,哦对,qtwedget用qpixmap组件显示图片,也有image。话说回来,…

Vue中使用jsx

1. jsx的babel配置 1.1 在项目中使用jsx,需要添加对jsx的支持: jsx通常会通过Babel来进行转换(React编写的jsx就是通过babel转换的)Vue中,只需要在Babel中配置对应的插件即可以下列举需要支持转换的案例: template -> vue-l…

Spring Cache+Redis缓存方案 vs 传统redis缓存直接使用RedisTemplate 方案对比

结合 Spring Cache 和 Redis 的缓存方案(即 Spring Cache Redis)相较于普通的 Redis 缓存使用(如直接通过 RedisTemplate 操作),具有以下显著优势: 具体实现方案请参考:Spring CacheRedis缓存…

Web应用安全漏洞扫描:原理、常用方法及潜在风险解析?

Web应用安全的关键环节在于进行漏洞扫描,这种扫描通过自动化或半自动化的方式,对应用进行安全测试。它能揭示出配置错误、代码缺陷等众多安全风险。接下来,我将详细阐述这些情况。 扫描原理 它主要模拟攻击者的行为,以探测和攻击…

Spring中@Value注解:原理、加载顺序与实战指南

文章目录 前言一、Value注解的核心原理1.1 容器启动阶段:环境准备1.2 Bean实例化阶段:后置处理器介入1.3 值解析阶段:双引擎处理1. 占位符解析(${...})2. SpEL表达式解析(#{...}) 1.4 类型转换与…

MySQL 8配置文件详解

MySQL 8 配置文件详解 MySQL 8 的配置文件(my.cnf或my.ini)是MySQL服务器启动时读取的主要配置文件,它包含了服务器运行所需的各种参数设置。以下是MySQL 8配置文件的详细解析: 配置文件位置 MySQL 8 会按照以下顺序查找配置文件: /etc/m…

台湾住宅IP哪家好,怎么找到靠谱的海外住宅IP代理商

探索台湾住宅IP:如何找到靠谱的海外住宅IP代理商? 在当今数字化时代,海外住宅IP的需求日益增长,尤其在跨境电商、网络营销、数据抓取等领域。对于需要台湾住宅IP的用户来说,找到一家靠谱的海外住宅IP代理商至关重要。本…

读研一些毕业感想

回首过往三年,从踌躇迷茫到明晰坚定,从稚嫩懵懂到明理成熟,一切只觉轻舟已过万重山。 依稀记得我拉着行李箱跋山涉水来到学校的那天,早上从广东中山乘坐10小时高铁到北京西,然后坐1一个多小时地铁到学校&#x…

《飞算JavaAI:稳定、高效、跨平台的AI编程工具优势解析》

随着人工智能技术的不断发展,AI编程工具越来越成为开发者们在研究和应用AI模型时不可或缺的利器。国内外的AI编程工具多种多样,涵盖了从基础编程语言、框架到图形化界面的多种选择。然而,在这些工具中,飞算JavaAI作为一种基于Java…

day27/60重写(补充)

DAY 27 函数专题2:装饰器 ps:第一期day27对应5月16日 知识点回顾: 装饰器的思想:进一步复用函数的装饰器写法注意内部函数的返回值 作业: 编写一个装饰器 logger,在函数执行前后打印日志信息(如…

网传西门子12亿美元收购云原生工业软件,云化PLM系统转机在协同

近日,网传西门子将以12亿美元全现金交易收购云原生MES公司FlexFact,并整合其技术至Xcelerator工业软件平台。如果此次收购动作完成,将会成为西门子加速工业云转型的标志性动作,背后的意义也极为深远,不仅会直接响应竞争…

大模型笔记_检索增强生成(RAG)

1. RAG的概念 RAG(Retrieval-Augmented Generation) 是一种结合 信息检索(Retrieval)与文本生成(Generation)的模型架构,旨在通过动态引入外部知识库或实时数据,提升大语言模型&…

Spring Security是如何完成身份认证的?

1. 用户名和密码被过滤器获取到,封装成 Authentication ,通常情况下是 UsernamePasswordAuthenticationToken 这个实现类。 2. AuthenticationManager 身份管理器负责验证这个 Authentication 3. 认证成功后, AuthenticationManager 身份管理器返回一…