前言

某大型论坛使用PHPWIND系统,近几个月管理员反馈老是崩溃无法访问,要求优化

开始操作

因为忘记密码,所以先操作恢复root密码后登录

首先查看var/log/message查看异常日志

发现大量mysql爆内存的错误和CPU升高的报警

但是在后台监控发现CPU的升高有规律性,怀疑有计划任务

所以开始如下操作

1、查看cron任务

使用crontab -l 查看到的确有定时备份的sh任务

[root@izt4ngwebxot1lwz05nhobz admin]# crontab -l
#17 0 * * * "/root/.acme.sh"/acme.sh --cron --home "/root/.acme.sh" > /dev/null
30 23 * * * /usr/sbin/ntpdate us.pool.ntp.org
30 2 * * * /home/cron/mysql_bk.sh
0 6 * * * /home/cron/www_bk.sh
00 4 * * * /home/cron/attach_bk.sh
30 3 * * * /home/cron/mysqlbackup113.107.161.54.sh
59 23 * * * /home/cron/nginx_log.sh

果然发现存在备份web程序、备份数据库、备份附件的SH

所以先注释掉附件和程序备份的SH,留下了数据库备份的SH并调整备份时间

2、优化message报错的mysql问题

Dec 31 19:58:29 izt4ngwebxot1lwz05nhobz kernel: Out of memory: Kill process 18840 (mysqld) score 648 or sacrifice child
Dec 31 19:58:29 izt4ngwebxot1lwz05nhobz kernel: Killed process 18840 (mysqld) total-vm:9969240kB, anon-rss:5972508kB, file-rss:0kB, shmem-rss:0kB
Dec 31 19:58:29 izt4ngwebxot1lwz05nhobz systemd: mysqld.service: main process exited, code=killed, status=9/KILL
Dec 31 19:58:29 izt4ngwebxot1lwz05nhobz systemd: Unit mysqld.service entered failed state.
Dec 31 19:58:29 izt4ngwebxot1lwz05nhobz systemd: mysqld.service failed.
Dec 31 19:58:29 izt4ngwebxot1lwz05nhobz systemd: Started Session 35672 of user root.
Dec 31 19:58:30 izt4ngwebxot1lwz05nhobz systemd: mysqld.service holdoff time over, scheduling restart.
Dec 31 19:58:30 izt4ngwebxot1lwz05nhobz systemd: Stopped MySQL Server.
Dec 31 19:58:30 izt4ngwebxot1lwz05nhobz systemd: Starting MySQL Server...
Dec 31 19:58:30 izt4ngwebxot1lwz05nhobz kernel: oom_reaper: reaped process 18840 (mysqld), now anon-rss:0kB, file-rss:8kB, shmem-rss:0kB
Dec 31 19:58:32 izt4ngwebxot1lwz05nhobz systemd: Started MySQL Server.

调整MYSQL配置文件如下


# CACHES AND LIMITS #
sort_buffer_size                = 4M
read_buffer_size                = 4M
myisam_sort_buffer_size         = 64M
tmp-table-size                 = 128M
max-heap-table-size            = 64M
query-cache-type               = 0
query-cache-size               = 128M
max-connections                = 1000
thread-cache-size              = 100
open-files-limit               = 65535
table-definition-cache         = 4096
table-open-cache               = 4096
# INNODB #
innodb-log-files-in-group       = 3
innodb-log-file-size            = 384M
innodb-flush-log-at-trx-commit  = 1
innodb_flush_method=O_DIRECT
innodb-file-per-table           = 1
innodb-buffer-pool-size         = 4G
innodb_write_io_threads         = 4
innodb_read_io_threads          = 4
innodb_lock_wait_timeout        = 60
innodb_log_buffer_size  = 16M
innodb_max_dirty_pages_pct      = 50

同时使用mysql -u root -p登录MYSQL登录数据库后查看超时设置

mysql> show global variables like '%timeout';
+-----------------------------+----------+
| Variable_name               | Value    |
+-----------------------------+----------+
| connect_timeout             | 10       |
| delayed_insert_timeout      | 300      |
| have_statement_timeout      | YES      |
| innodb_flush_log_at_timeout | 1        |
| innodb_lock_wait_timeout    | 60       |
| innodb_rollback_on_timeout  | OFF      |
| interactive_timeout         | 1800     |
| lock_wait_timeout           | 255800   |
| net_read_timeout            | 30       |
| net_write_timeout           | 60       |
| rpl_stop_slave_timeout      | 31536000 |
| slave_net_timeout           | 60       |
| thread_pool_idle_timeout    | 60       |
| tokudb_last_lock_timeout    |          |
| tokudb_lock_timeout         | 4000     |
| wait_timeout                | 1800     |
+-----------------------------+----------+
16 rows in set (0.00 sec)

发现超时的时间设置有点大

修改优化设置

set global interactive_timeout=100;
set global wait_timeout=100;

同时发现之前有报错要求mysqlupgrade,于是用mysql_upgrade -u root -p --force执行升级数据库操作

[root@izt4ngwebxot1lwz05nhobz admin]# mysql_upgrade -u root -p --force
Enter password: 
Checking server version.
Running queries to upgrade MySQL server.
Checking system database.
mysql.columns_priv                                 OK
mysql.db                                           OK
mysql.engine_cost                                  OK
mysql.event                                        OK
mysql.func                                         OK
mysql.general_log                                  OK
mysql.gtid_executed                                OK
mysql.help_category                                OK
mysql.help_keyword                                 OK
mysql.help_relation                                OK
mysql.help_topic                                   OK
mysql.innodb_index_stats                           OK
mysql.innodb_table_stats                           OK
mysql.ndb_binlog_index                             OK
mysql.plugin                                       OK
mysql.proc                                         OK
mysql.procs_priv                                   OK
mysql.proxies_priv                                 OK
mysql.server_cost                                  OK
mysql.servers                                      OK
mysql.slave_master_info                            OK
mysql.slave_relay_log_info                         OK
mysql.slave_worker_info                            OK
mysql.slow_log                                     OK
mysql.tables_priv                                  OK
mysql.time_zone                                    OK
mysql.time_zone_leap_second                        OK
mysql.time_zone_name                               OK
mysql.time_zone_transition                         OK
mysql.time_zone_transition_type                    OK
mysql.user                                         OK
The sys schema is already up to date (version 1.5.2).
Checking databases.
enable.pcr_actions                                 OK
enable.pcr_activity                                OK
enable.pcr_actmember                               OK
enable.pcr_adbbs                                   OK
enable.pcr_administrators                          OK
enable.pcr_adminlog                                OK
enable.pcr_adminset                                OK
enable.pcr_advert                                  OK
enable.pcr_announce                                OK
enable.pcr_argument                                OK
enable.pcr_attachbuy                               OK
enable.pcr_attachs                                 OK
enable.pcr_bankplus                                OK
enable.pcr_banuser                                 OK
enable.pcr_bbsftp                                  OK
enable.pcr_bbsftplevel                             OK
enable.pcr_bbsftpserver                            OK
enable.pcr_bbsinfo                                 OK
enable.pcr_block                                   OK
enable.pcr_buyadvert                               OK
enable.pcr_cache                                   OK
enable.pcr_cknum                                   OK
enable.pcr_clientorder                             OK
enable.pcr_cmembers                                OK
enable.pcr_cmsmodule                               OK
enable.pcr_cnalbum                                 OK
enable.pcr_cnclass                                 OK
enable.pcr_cnphoto                                 OK
enable.pcr_colonys                                 OK
enable.pcr_config                                  OK
enable.pcr_creditlog                               OK
enable.pcr_creditlog1                              OK
enable.pcr_credits                                 OK
enable.pcr_customfield                             OK
enable.pcr_datastate                               OK
enable.pcr_debateclass                             OK
enable.pcr_debatedata                              OK
enable.pcr_debateinfo                              OK
enable.pcr_debatereplys                            OK
enable.pcr_debates                                 OK
enable.pcr_debatethreads                           OK
enable.pcr_draft                                   OK
enable.pcr_elements                                OK
enable.pcr_extragroups                             OK
enable.pcr_favors                                  OK
enable.pcr_feed                                    OK
enable.pcr_focus                                   OK
enable.pcr_forumdata                               OK
enable.pcr_forumlog                                OK
enable.pcr_forums                                  OK
enable.pcr_forumsell                               OK
enable.pcr_forumsextra                             OK
enable.pcr_forumtype                               OK
enable.pcr_friends                                 OK
enable.pcr_hack                                    OK
enable.pcr_help                                    OK
enable.pcr_home                                    OK
enable.pcr_invitecode                              OK
enable.pcr_ipstates                                OK
enable.pcr_keyword                                 OK
enable.pcr_ks                                      OK
enable.pcr_medalinfo                               OK
enable.pcr_medalslogs                              OK
enable.pcr_medaluser                               OK
enable.pcr_membercredit                            OK
enable.pcr_memberdata                              OK
enable.pcr_memberinfo                              OK
enable.pcr_members                                 OK
enable.pcr_memo                                    OK
enable.pcr_modules                                 OK
enable.pcr_msg                                     OK
enable.pcr_msgc                                    OK
enable.pcr_msglog                                  OK
enable.pcr_nav                                     OK
enable.pcr_online                                  OK
enable.pcr_payadver                                OK
enable.pcr_permission                              OK
enable.pcr_pidtmp                                  OK
enable.pcr_plan                                    OK
enable.pcr_polls                                   OK
enable.pcr_posts                                   OK
enable.pcr_posts1                                  OK
enable.pcr_posts10                                 OK
enable.pcr_posts11                                 OK
enable.pcr_posts12                                 OK
enable.pcr_posts13                                 OK
enable.pcr_posts2                                  OK
enable.pcr_posts3                                  OK
enable.pcr_posts4                                  OK
enable.pcr_posts5                                  OK
enable.pcr_posts6                                  OK
enable.pcr_posts7                                  OK
enable.pcr_posts8                                  OK
enable.pcr_posts9                                  OK
enable.pcr_proclock                                OK
enable.pcr_qiandao                                 OK
enable.pcr_recycle                                 OK
enable.pcr_report                                  OK
enable.pcr_reward                                  OK
enable.pcr_safelog                                 OK
enable.pcr_schcache                                OK
enable.pcr_selluid                                 OK
enable.pcr_setform                                 OK
enable.pcr_sharelinks                              OK
enable.pcr_singleright                             OK
enable.pcr_smiles                                  OK
enable.pcr_sms                                     OK
enable.pcr_sms_log                                 OK
enable.pcr_song_apply                              OK
enable.pcr_song_data                               OK
enable.pcr_sqlcv                                   OK
enable.pcr_stamp                                   OK
enable.pcr_styles                                  OK
enable.pcr_tagdata                                 OK
enable.pcr_tags                                    OK
enable.pcr_threads                                 OK
enable.pcr_tmsgs                                   OK
enable.pcr_tmsgs1                                  OK
enable.pcr_toollog                                 OK
enable.pcr_tools                                   OK
enable.pcr_trade                                   OK
enable.pcr_tradeorder                              OK
enable.pcr_usergroups                              OK
enable.pcr_usertool                                OK
enable.pcr_viewbanklog                             OK
enable.pcr_voter                                   OK
enable.pcr_warning                                 OK
enable.pcr_warningf                                OK
enable.pcr_windcode                                OK
enable.pcr_wordfb                                  OK
sys.sys_config                                     OK
Upgrade process completed successfully.
Checking if update is needed.
[root@izt4ngwebxot1lwz05nhobz admin]# 

其他的可以按情况进行优化。

3、卸载jankens

发现论坛上还运行着jankens,发现没人使用,使用yum remove janknes删除之

4、卸载SS

发现论坛服务器上还挂着SS,使用pip uninstall shadowsocks-libv卸载完成

5、调整安全策略,清理

禁止22端口登录、删除两年前的备份、yum update一次

优化后效果,可以看到5号中午后CPU曲线下降明显,同时论坛论坛反应速度增加,无反应时间减少

优化结束

week.png

参考文章:

https://cloud.tencent.com/developer/article/1508290
https://imysql.com/2012/09/21/mysql-faq-setup-innodb-quickly.html
https://imysql.com/node/181

Last modification:June 16, 2024
如果觉得我的文章对你有用,请随意赞赏