我有一个运行多个WordPress站点的服务器。 服务器configuration相当标准:CentOS,Apache,MySQL,cPanel。
我注意到,我经常在不同的WP数据库的mysqladmin进程列表中看到以下几行:
| Id | User | Host | db | Command | Time | State | Info +---------+------------------+-----------+------------------+----------------+------+----------------------+--------- | 4688637 | DELAYED | localhost | salr4e1_wrdp2 | Delayed insert | 208 | Waiting for INSERT |
我不明白为什么插入显示为延迟? 如果进程列表中有多个这样的数据库,则负载正在增长。 这不会让我的服务器感觉良好。
我试图用mysqlcheck -aro来修复这样的数据库。 有时帮助,但往往不是,我必须杀死这样的进程,以减less服务器的负载。
请注意您的用户名是DELAYED。 这是mysqld的内部用户名,用于处理任何仅在MyISAM,MEMORY,ARCHIVE和BLACKHOLE表上可用的INSERT DELAYED语句。
这可能是将您的WordPress数据库从MyISAM切换到InnoDB的最佳时机。 如果切换到InnoDB,则将所有INSERT DELAYED语句更改为INSERT,否则语句将生成错误。
UPDATE
你有几个select
选项1)将每个WP数据库移动到单独的数据库服务器(裸机或虚拟)
您可以configuration每个数据库以满足特定WP数据库的需求。 当然,这个问题的范围之外还有预算的考虑。
选项2)在同一个数据库服务器上创build多个MySQL实例,每个WP数据库一个
您可以将每个数据库configuration为特定WP数据库的需要,但每个WP数据库的数据目录应驻留在单独的磁盘卷上。
选项3)放大数据库服务器
添加更多的RAM并使用更快的磁盘卷。 然后, configurationMySQL实例为MyISAM尽可能多地使用RAM 。 请记住,MyISAMcaching只适用于索引页面而不是数据。
选项4)选项2和3的组合
选项5)configuration延迟选项
delayed_insert_limit :在执行这么多INSERT DELAYED语句之后,在允许新的INSERT DELAYED语句之前,挂起的SELECTs语句被优先运行。
delayed_insert_timeout :handeler线程在超时之前等待的秒数。
delayed_queue_size :每个表的行数限制。 如果队列已满,则任何新的INSERT DELAYED语句都将暂停,直到队列有空间。
选项6)我最初的build议。 转换一切到InnoDB! 您可以cachingInnoDB缓冲池中的Data和Index页面。