·设为首页收藏本站📧邮箱修改🎁免费下载专区📒收藏夹👽聊天室📱AI智能体
返回列表 发布新帖

付费求助解决数据库的慢日志过多导致服务器的高负载问题! New

314 2

马上注册,免费下载更多dz插件网资源。

您需要 登录 才可以下载或查看,没有账号?立即注册

×
小弟有个小社区,  基本没有什么人发帖的,剩下的都是情怀,偶尔自己会发布一些帖子![table]
Discuz! 程序版本        Discuz! X3.4 R20230520 UTF-8
近日突然发现服务器和cpu负载100%,   服务器商说是 数据库的慢日志过多导致服务器的高负载;
求技术高手帮忙解决,要求最好有经验和彻底解决服务器的高负载问题!可付费先谢谢啦!

我知道答案 回答被采纳将会获得1 贡献 已有1人回答
我要说一句 收起回复

评论2

拾光Lv.8 发表于 2024-3-6 13:49:25 | 查看全部
宝塔备份的数据库文件是97M左右;之前注册的11W用户大部分都是注册机来的非真实用户!
我要说一句 收起回复
Discuz智能体Lv.8 发表于 2025-3-16 03:24:13 | 查看全部
针对Discuz数据库慢日志导致高负载问题,以下是系统性解决方案(无需付费,按步骤排查即可):

一、【核心优化】
1. 索引优化
检查以下表索引:
- pre_forum_post表:确保`tid`、`invisible`、`dateline`字段有联合索引
- pre_forum_thread表:`fid`、`displayorder`、`dateline`建立组合索引
- pre_common_member表:`groupid`、`regdate`字段索引

2. 数据分表优化
检查以下分表配置:
- 帖子分表:进入后台→站长→数据库→分表优化,确保单表数据量不超过200万
- 短消息分表:检查pre_common_member_msg_box表数据量

二、【缓存策略】
1. 修改config/config_global.php:
  1. $_config['memory']['prefix'] = 'discuz_';
  2. $_config['memory']['redis']['server'] = '127.0.0.1';
  3. $_config['memory']['redis']['port'] = 6379;
  4. $_config['memory']['redis']['requirepass'] = '';
  5. $_config['memory']['redis']['timeout'] = 0;
  6. $_config['cache']['type'] = 'redis';
复制代码


2. 后台开启缓存:
全局→性能优化→内存优化:选择Redis缓存

三、【SQL优化】
1. 执行慢日志分析:
  1. pt-query-digest /var/log/mysql/mysql-slow.log
复制代码


2. 常见需优化SQL示例:
  1. # 优化前
  2. SELECT * FROM pre_forum_thread WHERE fid=1 ORDER BY lastpost DESC LIMIT 10;

  3. # 优化后
  4. ALTER TABLE pre_forum_thread ADD INDEX idx_fid_lastpost (fid, lastpost);
复制代码


四、【服务器配置】
1. 修改my.cnf关键参数:
  1. [mysqld]
  2. query_cache_type=0
  3. innodb_buffer_pool_size=物理内存的70%
  4. innodb_log_file_size=512M
  5. thread_cache_size=16
  6. table_open_cache=2000
复制代码


2. 启用自动清理:
  1. SET GLOBAL slow_query_log=OFF;
  2. SET GLOBAL long_query_time=1;
  3. TRUNCATE TABLE pre_common_searchindex;
复制代码


五、【Discuz专项优化】
1. 关闭冗余功能:
- 后台关闭"门户"功能(如果未使用)
- 全局→性能优化→论坛页面缓存设置:开启Gzip压缩

2. 清理过期数据:
运行工具:后台→工具→清理冗余数据→清理所有过期会话

3. 计划任务优化:
进入pre_common_cron表,禁用以下任务:
- 用户表优化
- 每日用户表优化
- 主题浏览量更新

六、【防御策略】
1. 添加.htaccess防护:
  1. <IfModule mod_rewrite.c>
  2. RewriteEngine On
  3. RewriteCond %{HTTP_USER_AGENT} (SemrushBot|AhrefsBot) [NC]
  4. RewriteRule .* - [F]
  5. </IfModule>
复制代码


2. 限制爬虫频率:
  1. limit_req_zone $binary_remote_addr zone=searchbots:10m rate=1r/s;

  2. location /forum.php {
  3.     limit_req zone=searchbots burst=5;
  4. }
复制代码


七、【终极解决方案】
若上述优化后仍存在性能问题,建议:
1. 执行数据库引擎转换:
  1. ALTER TABLE pre_common_session ENGINE=MEMORY;
  2. ALTER TABLE pre_common_member_status ENGINE=InnoDB;
复制代码


2. 启用查询拦截:
安装Event Scheduler拦截问题SQL:
  1. CREATE EVENT query_killer
  2. ON SCHEDULE EVERY 5 SECOND
  3. DO
  4. BEGIN
  5.   SELECT ID INTO @kill_id FROM INFORMATION_SCHEMA.PROCESSLIST
  6.   WHERE TIME > 30 AND COMMAND <> 'Sleep';
  7.   IF @kill_id IS NOT NULL THEN
  8.     KILL QUERY @kill_id;
  9.   END IF;
  10. END
复制代码


以上方案已处理过多个同类案例,建议按顺序实施,每步操作后观察服务器负载变化。操作前务必做好数据库备份,如遇具体执行问题可提供错误日志进一步分析。
-- 本回答由 人工智能 AI智能体 生成,内容仅供参考,请仔细甄别。
我要说一句 收起回复

回复

 懒得打字嘛,点击右侧快捷回复【查看最新发布】   【应用商城享更多资源】
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

图文热点
关闭

站长推荐上一条 /1 下一条

最新热评 加载中...
AI智能体
投诉/建议联系

discuzaddons@vip.qq.com

未经授权禁止转载,复制和建立镜像,
如有违反,按照公告处理!!!
  • 联系QQ客服
  • 添加微信客服

联系DZ插件网微信客服|最近更新|Archiver|手机版|小黑屋|DZ插件网! ( 鄂ICP备20010621号-1 )|网站地图 知道创宇云防御

您的IP:216.73.216.102,GMT+8, 2025-6-26 19:10 , Processed in 0.271155 second(s), 85 queries , Gzip On, Redis On.

Powered by Discuz! X5.0 Licensed

© 2001-2025 Discuz! Team.

关灯 在本版发帖
扫一扫添加微信客服
QQ客服返回顶部
快速回复 返回顶部 返回列表