如何提高Trac的表现

时间:2008-10-17 21:02:43

标签: python performance trac

我注意到我的Trac特定实例没有快速运行并且有很大的滞后。这是一个项目的开始,所以Trac中没有多少(除了加载到SVN中的插件和代码)。

设置信息:这是通过WebFaction托管的SELinux系统实现的。它落后于Apache,连接通过SSL。目前,我使用.htpasswd文件来控制访问。

是否有任何建议的方法来改善Trac的性能?

4 个答案:

答案 0 :(得分:5)

如果不了解更多有关您的设置的话,很难说,但一个简单的胜利就是确保Trac运行在mod_python之类的内容中,这样可以将Python运行时保留在内存中。否则,每个HTTP请求都将导致Python运行,导入所有模块,然后最终处理请求。使用mod_python(或FastCGI,无论您喜欢哪种方式)将消除该加载并直接跳到好东西。

此外,随着您的Trac数据库的增长以及您使用该网站的人越来越多,您可能会超出默认的SQLite数据库。此时,您应该考虑将数据库迁移到PostgreSQL或MySQL,因为它们能够更快地处理并发请求。

答案 1 :(得分:3)

我们用FastCGI获得了最好的运气。另一个关键因素是仅使用https进行身份验证,但对所有其他流量使用http - 我真的很惊讶这有多大作用。

答案 2 :(得分:2)

我注意到了,如果

select disctinct name from wiki

需要超过5秒钟(例如由于此表中的一百万行 - 这是一个真实的故事(我们有一个填充它的脚本)),浏览维基页面变得非常慢并接管2*t*n ,其中t是执行引用查询的时间(当然是> 5s),n是查看页面上存在的一些tracwiki链接。 这是由于trac对此查询具有(硬编码)5s缓存过期。 trac使用它来告诉链接应该是什么颜色。我们将这个值重新硬编码为30秒(我们需要那么多页面,所以每30个人需要等待6到7秒)。

它可能不是导致您的问题的原因,但可能是。祝你加速你的Trac实例好运。

答案 3 :(得分:1)

使用和expires-header静态提供chrome文件也有帮助。请参阅this page的结尾。