如何提高Trac的性能

3

我注意到我的Trac实例运行缓慢,有很大的延迟。这是项目初期,所以Trac中没有太多内容(除了加载到SVN的插件和代码)。

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

有没有推荐的方法可以改善Trac的性能?


你可以提供更多关于你的设置的信息 - 操作系统、Web服务器、使用的协议、认证方案。 - nosklo
4个回答

5
不了解您的设置情况很难说,但有一个简单的方法是确保Trac在类似于mod_python的环境中运行,这将使Python运行时保留在内存中。否则,每个HTTP请求都会导致Python运行,导入所有模块,最后处理请求。使用mod_python(或FastCGI,以您喜欢的方式)将消除加载并直接跳转到好的内容。
此外,随着Trac数据库的增长和更多人使用该网站,您可能会超出默认的SQLite数据库。此时,您应考虑将数据库迁移到PostgreSQL或MySQL,因为它们能够更快地处理并发请求。

我最后看到的是,他们的MySQL支持非常不稳定,并且不建议使用。 我尝试了将我的数据库导入Postgres,但与里程碑相关的一些内容丢失了。 - Jon Topper
我已经在MySQL上运行Trac 8个月了,它似乎表现良好。我遇到的唯一问题是,如果8小时内没有使用(即过夜),Trac和MySQL之间的连接会断开。我有一个脚本,在早上6点连接到我们的Trac主页来解决这个问题。 - Chris B

3

我们在使用FastCGI方面运气最佳。另一个关键因素是仅在身份验证时使用https,但对于所有其他流量使用http--我真的很惊讶这使得效果如此之大。


我同意使用FastCGI。如果您的发行版中没有它,安装起来可能有点麻烦,但并不可怕。使用FCGI可以解决Apache和Python | modPython(Modified Centos 4.3)之间的一些兼容性问题。 - Sam Corder

2

我注意到,如果

select disctinct name from wiki

当浏览Wiki页面时,如果需要执行的查询时间超过5秒(例如由于该表中有100万行 - 这是一个真实的故事(我们有一个填充它的脚本)),则浏览变得非常缓慢,并且需要超过2*t*n的时间,其中t是引用查询的执行时间(当然大于5秒),n是查看页面上存在的TracWiki链接数量。
这是因为Trac对此查询具有硬编码的5秒缓存过期。它被Trac用来确定链接的颜色。我们重新将该值硬编码为30秒(我们需要那么多页面,因此每30秒有人必须等待6-7秒)。
这可能不是导致您问题的原因,但也有可能是。祝您加速Trac实例的好运。

1
不是我的问题(因为我刚开始),但还是好知道! - torial
2
这个问题应该在0.12及以后版本中得到修复。 - Remy Blank

1
使用静态方式提供Chrome文件,并设置过期头,也可以帮助解决问题。请参见此页面末尾。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接