【问题标题】:Redmine Performance InconsistencyRedmine 性能不一致
【发布时间】:2012-01-04 08:08:04
【问题描述】:

我在 Linux x86_64 系统上部署了一个 redmine 实例,但我遇到了一个有趣的性能不一致问题。它的行为如下:

静置几个小时(对应用程序根本没有请求)然后建立连接,响应前几个请求需要很长时间(可能长达 15 秒+,有时每大约 1 分钟响应)。在最初的几个请求之后,它的性能非常快,几乎可以立即从日志中看到响应时间不到 100 毫秒。

我尝试了几个选项来使用 mongrel 运行它,将它部署在乘客 Nginx 和乘客 Apache 上。该行为简单地可重现。我从测试中意识到,当它保持忙碌时,完全没有问题。

这到底是怎么回事?我该如何改进?

【问题讨论】:

  • 另见stackoverflow.com/questions/7062563/… - windows 上 mysql 的一个已知问题,因此可能与您的问题无关。日志文件中是否有任何内容(例如 mongrel 日志)?
  • 在与数据库相关的日志中真的看不到任何错误。我还检查了this FAQ in Redmine。我从第一天开始就有 MySQL/Ruby 适配器 2.8.1,唯一的问题是 gem 不是通过 gem 命令安装的,而是通过执行 extconf.rb 脚本来安装的。
  • 再次通过Passenger user guide,看起来可能有机会通过结合使用PassengerPreStart、PassengerMinInstances和PassengerPoolIdleTime来解决问题。

标签: performance apache nginx redmine passenger


【解决方案1】:

此问题很可能是由乘客池闲置引起的。您可以将 PassengePoolIdleTime 增加到更大的数字,或者如果您根本不希望它超时,请将值设置为 0。类似下面的 Apache 配置应该可以解决问题

<VirtualHost *:80>
    DocumentRoot /path/to/redmine/site/public
    ServerName example.com
    PassengerPoolIdleTime 0
        <Directory "/path/to/redmine/site/public">
                PassengerEnabled on
                AllowOverride
                Options -MultiViews
        </Directory>
</VirtualHost>

【讨论】:

  • 我为一个愚蠢的问题道歉。应该在 VirtualHost 中为每个 VirtualHost 配置PassengerPoolIdleTime,还是应该全局设置?
  • 据我记得您可以在全球范围内执行此操作,但我建议为每个虚拟主机设置它。根据应用程序、它的使用情况以及它的命中率,不同的空闲时间可能更适合不同的站点以节省资源。
  • 这对我们的服务器产生了巨大的影响!谢谢詹姆斯!
  • 这个配置的问题是,服务器可能不会重新启动。请注意乘客配置选项的上下文。 PassengerPoolIdleTime 应该在服务器上下文中设置(通常是 httpd.conf 或 apache.conf)phusionpassenger.com/library/config/apache/reference/…
  • @AdamKalisz 虽然我同意这可能不是当时或现在的最佳答案,但如果 6 年后仍有此类问题尚未解决或有更好的解决方案,我会担心书面
猜你喜欢
  • 2017-08-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-04-18
相关资源
最近更新 更多