1。dbspaces位置
logdbs, phydbs, tmpdbs, blobdbs, datadbs不要与rootdbs放在一起。最好将各日志放在不同的硬盘上,以提高读写效率。
对服务器来说,一盘多硬盘的情况下,服务器本身会带卷的机制。可以把多块硬盘划为一个或多个逻辑卷。这时就无法显性的
把各日志分配到不同的硬盘上,但对卷操作时,服务器是否写到不同的硬盘上就不知道了。(我想应该会在读写同时进行时写到多块盘上)
2。裸设备
按理说裸设备应该比熟文件快,但我测试中发现不如熟文件快。一定是哪个环节上出了问题。有机会还要测试使用裸设备来对比一下效率。
但裸设备只是在IO是效率比较高,informix的整体性能不仅在IO,所以应该不会因为裸设备的原因把系统性能提到一个级别,只能是优化。
3。日志类型
informix日志分为4种:无日志, 无缓冲日志, 缓冲日志, ansi
缓冲日志是效率比较高的
4。检验点频率与周期
检验点是共享内存中数据写入磁盘的一致点。如果周期较常,可以
更有效利用共享内存。但遇到问题,共享内存中的数据有可能丢失
onconfig中的 CKPTIONTVL 加大会减少检验频率,有可能提高性能
5。CPU相关参数
MULTIPROCESSOR 1可以指定为多个cpu
6。buffers、locks
在内存允许的情况下,buffers越多越好。应占所有共享内存的40%以上(但缓冲区越多,校验点越多)
buffersize = buffers*pagesize
pagesize 可以用onstat -b显示在最后一位(测试中软linux:2k)
可以设置buffersize为物理内存的20-25%, 400m = 2k*buffers buffers=200000
locks也要适当增加,保证在onstat -p中不会出现锁等待
7。LRU
将buffers设为多少个队列,多了可以减少多用户的争用。bufwaits反应这个参数
LRU_MAX_DIRTY 60# LRU percent dirty begin cleaning limit
LRU_MIN_DIRTY 50
上面两个参数数值越小可以减小检验时间,但有可能影响别的应用程序(是间隔小,还是值小?)
8。CLEANERS
清理修改缓冲区的线程数,建意与LRU相同。
9。logaize,logfile
少量大日志文件更容易管理,大量小日志文件更安全。
如果不考虑太多备份,可以用少量大日志
10。共享内存
SHMVIRTSIZE 8000 # initial virtual shared memory segment size
SHMADD 8192 # Size of new shared memory segments (Kbytes)
SHMTOTAL 0
SHMVIRTSIZE共享内存初始值可以根据onstat -g seg的值来指定(正常运行状态) (大概80M)
SHMADD每次增加值,应为SHMVIRTSIZE的10%以上。也可以根据物理内存分:512M以上物理内存可以分32768k
SHMTOTAL 0为不限制
11。RA_PAGES、RA_THRESHOLD
onstat -p 中的 idx_RA、 idxda_RA、da_RA之和应接近RA_pgsused值(1:1)
具体怎么调整要查一下
12。日志大小的一些简单原则
rootdbs上不要放数据,logdbs建立成datadbs的1/3,phydbs建立成logdbs的1/2,tmpdbs=phydbs