首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >红色的写性能差(更新不是真正的多线程)

红色的写性能差(更新不是真正的多线程)
EN

Server Fault用户
提问于 2016-02-25 13:49:22
回答 1查看 85关注 0票数 0

(我已经回答了)我正在与大约100个用户的红宝石公司的糟糕表现作斗争。为了测试它,我设置了一个简单的场景来更新五个不同示例问题上的“已完成百分比”。所有更新都在同一秒钟内开始,使用curl。令我惊讶的是,redmine中的更新似乎是序列化的(我指的不是多线程),其时间安排如下:

代码语言:javascript
复制
real    0m1.122s
real    0m1.404s
real    0m2.258s
real    0m2.782s
real    0m3.151s
real    0m3.336s

或者另一次尝试,当其他会话的某些处理也受到阻碍时:

代码语言:javascript
复制
real    0m7.492s
real    0m7.803s
real    0m8.045s
real    0m8.246s
real    0m8.597s
real    0m8.825s

production.log中处理大量SQL查询后的关键时刻是提交阶段。注意提交是如何在毫秒内完成的,但是在提交之间发生了一些神秘的事情,不仅序列化它们,而且需要几秒钟才能完成状态。这段日志是完整的-我没有删除中间的任何行。

代码语言:javascript
复制
   (0.6ms)  SELECT COUNT(*) FROM `custom_workflows` WHERE `custom_workflows`.`active` = 1 AND `custom_workflows`.`observable` = 'issue' AND (is_for_all OR EXISTS (SELECT * FROM custom_workflows_projects WHERE project_id=123 AND custom_workflow_id=id))
   (30.1ms)  COMMIT
Redirected to http://redmine.mydomain.local/issues/11973
Completed 302 Found in 7418.4ms (ActiveRecord: 135.8ms)
   (0.6ms)  SELECT COUNT(*) FROM `custom_workflows` WHERE `custom_workflows`.`active` = 1 AND `custom_workflows`.`observable` = 'issue' AND (is_for_all OR EXISTS (SELECT * FROM custom_workflows_projects WHERE project_id=123 AND custom_workflow_id=id))
   (24.8ms)  COMMIT
Redirected to http://redmine.mydomain.local/issues/9240
Completed 302 Found in 7738.3ms (ActiveRecord: 57.4ms)
   (0.4ms)  SELECT COUNT(*) FROM `custom_workflows` WHERE `custom_workflows`.`active` = 1 AND `custom_workflows`.`observable` = 'issue' AND (is_for_all OR EXISTS (SELECT * FROM custom_workflows_projects WHERE project_id=123 AND custom_workflow_id=id))
   (25.9ms)  COMMIT
Redirected to http://redmine.mydomain.local/issues/9614
Completed 302 Found in 7949.0ms (ActiveRecord: 135.7ms)
   (0.5ms)  SELECT COUNT(*) FROM `custom_workflows` WHERE `custom_workflows`.`active` = 1 AND `custom_workflows`.`observable` = 'issue' AND (is_for_all OR EXISTS (SELECT * FROM custom_workflows_projects WHERE project_id=123 AND custom_workflow_id=id))
   (24.6ms)  COMMIT
Redirected to http://redmine.mydomain.local/issues/12016
Completed 302 Found in 8058.5ms (ActiveRecord: 102.5ms)
   (0.5ms)  SELECT COUNT(*) FROM `custom_workflows` WHERE `custom_workflows`.`active` = 1 AND `custom_workflows`.`observable` = 'issue' AND (is_for_all OR EXISTS (SELECT * FROM custom_workflows_projects WHERE project_id=123 AND custom_workflow_id=id))
   (21.2ms)  COMMIT
Redirected to http://redmine.mydomain.local/issues/8853
Completed 302 Found in 8472.5ms (ActiveRecord: 90.4ms)
   (0.5ms)  SELECT COUNT(*) FROM `custom_workflows` WHERE `custom_workflows`.`active` = 1 AND `custom_workflows`.`observable` = 'issue' AND (is_for_all OR EXISTS (SELECT * FROM custom_workflows_projects WHERE project_id=123 AND custom_workflow_id=id))
   (27.9ms)  COMMIT
Redirected to http://redmine.mydomain.local/issues/10007
Completed 302 Found in 8700.4ms (ActiveRecord: 137.4ms)

我已经查过了:

  • 乘客状态有超过足够的线程。
  • apache2 httpd有超过足够多的进程。
  • mysql 5.1使用innodb
  • 无名氏不显示锁
  • innotop不过量I/O
  • iostat没有显示过多的I/O (大约10-15 IOPS,磁盘最大使用时间为17% )
  • top不会显示CPU使用率过高(最大的70%可能是400%)。
EN

回答 1

Server Fault用户

回答已采纳

发布于 2016-02-25 14:57:22

好的,它是SMTP序列化的;默认情况下,它是不被记录的。

我改变了/var/www/html/redmine/config/configuration.yml

代码语言:javascript
复制
  email_delivery:
    # delivery_method: :smtp       # slows down everything!
    delivery_method: :async_smtp
票数 0
EN
页面原文内容由Server Fault提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://serverfault.com/questions/759752

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档