在wordpress DB中优化mysql select

时间:2015-01-09 13:38:28

标签: php mysql wordpress select optimization

首先是一些数据:

  1. wordpress instalation(~110k帖子,~20k标签,~250类,最新版本)
  2. W3包含的总缓存(磁盘缓存:数据库,对象,页面,浏览器)
  3. 服务器是VPS(4 GB RAM /最多8 GB动态,2个vCores,Ubuntu 64位)
  4. 运行Apache2,php 5.3.10,mysql 5.5.37
  5. 服务器上正在运行的内容:

    1. 一些非常小的域名(流量和资源接近0)
    2. 将数据导入WP的5个cron作业
    3.   

      问题:查看帖子大约需要10秒。刷新是很快的,因为缓存插件做得很好,但如果在查看之前没有访问帖子大约10-12秒。

      经过一些跟踪以找出出现了什么问题,我发现每个页面的mysql查询占用了总时间的90-95%(每页9-10秒)。

      我试图弄清楚mysql配置是否有问题并修改了my.cnf中默认值的错误:

      key_buffer_size         = 64M
      innodb_buffer_pool_size = 2G
      innodb_log_file_size = 256M
      innodb_log_buffer_size = 8M
      innodb_thread_concurrency = 16
      innodb_flush_method = O_DIRECT
      innodb_additional_mem_pool_size = 20M
      query_cache_limit       = 8M
      query_cache_size        = 64M
      max_allowed_packet      = 16M
      thread_stack            = 192K
      thread_cache_size       = 32
      

      重新启动后,根本没有任何改进,因为我猜我错过了什么。我已经开始用newrelic进行跟踪,他们的系统指出有些武器需要花费34秒来执行。

      这是来自newrelic的日志的SQL查询:

      SELECT SQL_CALC_FOUND_ROWS  qmV?_posts.ID FROM qmV?_posts  INNER JOIN qmV?_postmeta ON ( qmV?_posts.ID = qmV?_postmeta.post_id ) WHERE ?=?  AND ( 
        MONTH( qmV?_posts.post_date ) = ?
      ) AND qmV?_posts.post_type = ? AND (qmV?_posts.post_status = ?) AND ( 
        qmV?_postmeta.meta_key = ?
      ) GROUP BY qmV?_posts.ID ORDER BY qmV?_postmeta.meta_value+? DESC LIMIT ?, ?
      

      我还试图验证表是否正确索引,看起来好像(显然)WP在优化数据库搜索方面做得很好。

      在子公司中,监控工具报告" MySQL CPU使用情况"这个查询正在运行时,大约在95%到105%左右。

      问题:我可以在此服务器上调整其他任何内容,或者我应该查看托管此应用程序的其他一些选项吗?如果您提出2&n选项,请参考您的选项。

      更新1: ps aux | grep' mysqld'返回:

      mysql 522 13.5 1.0 1227664 85128? Ssl 2014 3513:12 / usr / sbin / mysqld

0 个答案:

没有答案