首先,当前本站lag现象比较严重,大家用起来都不爽,本文就是在本地编辑再贴上来的,:)
所以对系统进行一定程度的优化显然是挺有必要的。记得KCN说过几个系统lag的所在,其中文章列表的存取和检索锁定貌似挺耗费系统资源的(原文找不到了,大概意思吧)
我稍微看了一下源代码,本来以为所有版面文章列表都是在内存中缓冲的,后来看了看才发现不是,还是要去存取文件。这个就大大增加了硬盘IO。我在SYSOP提出把所有文章列表放到内存中缓冲,据说不可行。后来又建议把一些热门版面设置标志为,如果是这些版面的话,就把文章列表放到内存,但是这个需要修改程序,貌似比较麻烦。我考虑了一下,想提出一个不用怎么修改程序的策略:
1,把一部分内存映射为一个虚拟盘,挂到系统里面去,例如/memdisk
2,一些热门版面的文章列表文件换个位置,例如放到bbs/boards/hot。
3,当整个bbs系统启动的时候,把bbs/boards/hot下的所有文件拷贝到/memdisk/boards目录下。然后把原来系统默认的文章列表文件的位置建立一个link,连接到/memdisk/boards下相应的文件。这样的话,就可以实现不修改程序而在内存中缓冲版面文章列表,提高存取速度。
4,写回策略:
因为内存毕竟存在掉电丢失数据的问题(有了UPS会好很多,但是也会有系统down掉的可能),所以及时把内存盘中的数据写回硬盘就很自然的了。鉴于该类文件可能挺大,直接拷贝内存文件到硬盘会比较消耗时间。我建议做如下处理:
4.1 拷贝内存版面文章文件到内存盘的临时目录(例如/memdisk/tmp)。这之前需要flock一下。
4.2 然后从内存盘临时目录拷贝到硬盘上,加上.NEW后缀。
4.3 硬盘上原文件重命名加上.OLD后缀
4.4 去掉.NEW后缀
4.5 删掉.OLD后缀文件
对于4这个操作,可以定时操作,也可以由其余策略进行操作。
5,鉴于热门版面的增加删除不会很频繁,如果要改动,可以考虑通过深夜重新启动bbs系统等方式进行。也可以先只读,再隐藏,保证没有人再使用该文件的情况下进行维护。
嘿嘿,大家看看是否可行
--
FROM 218.182.104.*