我的查询
./mysqlslap --user=root --concurrency=50 --iterations=1 --pass=toor -vv --create-schema=db --query="SELECT SQL_CALC_FOUND_ROWS wp_posts.* FROM wp_posts INNER JOIN wp_term_relationships ON (wp_posts.ID = wp_term_relationships.object_id) INNER JOIN wp_term_taxonomy ON (wp_term_relationships.term_taxonomy_id = wp_term_taxonomy.term_taxonomy_id) WHERE 1=1 AND wp_term_taxonomy.taxonomy = 'category' AND wp_term_taxonomy.term_id IN ('1') AND wp_posts.post_type = 'post' AND (wp_posts.post_status = 'publish') GROUP BY wp_posts.ID ORDER BY wp_posts.post_date DESC LIMIT 35, 6"
一些结果
Average number of seconds to run all queries: 68.904 seconds
Minimum number of seconds to run all queries: 68.904 seconds
Maximum number of seconds to run all queries: 68.904 seconds
Number of clients running queries: 50
Average number of queries per client: 1
平均负载峰值达到 32 以上。
测试机的规格如下:
- 4GB 内存
- E6550 @ 2.33GHz(双核)
- 单 SATA 磁盘
- Debian Lenny + Apache + PHP + MySQL
可以读取 MySQL 配置在这里。有人能建议我该如何调整以提高性能吗?谢谢。
答案1
- 安装 w3tc 或 wp-super-cache
- 减少帖子/标签的数量(请记住,wordpress 将帖子的修订存储在 wp_posts 表中,因此,如果有人喜欢保持登录状态,并且每 5 分钟自动保存一次,那么您就可以在那里获得相当多的额外修订)
- 替换 WordPress
- 获得更快的磁盘
虽然我根据直觉不同意配置中的某些可调参数,http://blog.mysqltuner.com/包含一个可以运行的脚本,该脚本会为您提供配置设置的输入。您需要让 mysql 运行 48 小时以上,以便它提供最佳建议。
- 表定义缓存
- thread_concurrency(在四核处理器上,我通常以 6 运行)
- join_buffer_size(您将其列为 join_buffer,但这可能不正确,请查看显示状态/显示变量以确保您的配置值按预期生效)
如果您没有在与数据库相同的分区上运行电子邮件,请考虑使用 noatime、nodiratime 挂载文件系统。检查文件系统上的其他可调设置。