关于discuz的优化纠结
作者 : admin 于 2010-01-15 15:23:42
2010
01-15
01-15
最近一直在寻找一个开源的方案来解决discuz的性能瓶颈。在做完几个关键表的分表后,sessions表又成了最大的瓶颈。因为页面每次刷新,至少两个sql语句在session表上,究其原因,session表的最大作用在于对用户行为的统计。
曾经尝试过使用php的session,不过支持phpsession的几个sever都不支持条件查询,除非是遍历匹配。这样也不能起到提高性能的作用。
在以上条件下,我寻找了两套方案:ttserver mongodb。
在session表100w数据的测试下,得出以下数据:
连接测试-只测试连接释放
tt:40.0904033184
mysqldb:0.0669066905975mongodb:226.840053558
mysqldb:0.154407262802经过一万次的连接测试,同一个脚本中,
ttserver连接耗时 40.09 秒,而mysql连接耗时0.07秒 linux下测试
mongodb 连接耗时 226.8 秒,而mysql连接耗时0.15秒 linux下测试但是在500次的查询测试中,同一个脚本中,主键查询和索引优化后的复杂查询
mongodb 查询耗时 0.021 秒
mysql 查询耗时 0.123 秒
可以看出,tt和mongo两个功能上完全支持此表优化的数据库,在连接性能上远不如mysql,而web为频繁连接中断的服务,显然并不适合做这项功能。
继续寻找支持此功能的开源方案,欢迎大家提供线索。
一月 15th, 2010 at 16:29:31
如果对游客不是很看重的话,可以去掉游客的session,只留下会员的。当然这还是没有从根本上解决问题。
一月 15th, 2010 at 16:49:14
或者可以继续放mysql,根据来的IP最后一段进行哈希分表成10几个或者255个小session表