mogilefsd同步速度调优
#查看主从
mogadm settings list
#一点点调试
mogadm settings list
mogadm settings set internal_queue_limit 500
mogadm settings set queue_rate_for_fsck 100
mogadm settings set queue_size_for_fsck 20000
#
mogadm settings set internal_queue_limit 50000
mogadm settings set queue_rate_for_fsck 10000
mogadm settings set queue_size_for_fsck 5000000
#
mogadm settings set internal_queue_limit 100000
mogadm settings set queue_rate_for_fsck 20000
mogadm settings set queue_size_for_fsck 10000000
#查看速度
mogadm fsck status
#查看状态
telnet 127.0.0.1 7001
#fsck工作量
!stats
#fsck数量
!jobs
#查看信息
!watch
#设置工作数量
!want 1 fsck
internal_queue_limit 这个值是指 tracker 从数据库(fsck )队列中一次取出的 FID 的数量.如果你使用 '!stats' 的命令连接在 tracker 上查看看, 你会见到象 work_queue_for_fsck 0 之类的这样的各种变量.如果你运行了很多个用来做 fsck 的 worker , 但这个统计非常低或为 0, 需要增加 internal_queue_limit 将会让它执行更快. 但不要设置的过高..大约几千可能是个合适的值.我建议是设置 2000-7000 之间.目前我是设置 5000, 这是一个缓慢的内部设置的增加,所以要有耐心点调.您要调整这个值保持不断的提供给队列任务又不能太多.所以直到出现 work_queue_for_fsck 后面一直有数,但又不高为止.
queue_size_for_fsck 这是给在 tracker 数据库的队列中一次取多少 FID 发送给 worker .太高,这会浪费你更多的磁盘空间,但是,如果队列是时常为零, 增加二倍 or 三倍的值来帮助你从队列中提前取得需求的内容.
queue_rate_for_fsck 注入到循环的每一个队列中的 FID 的数量(every other second-ish),如果队列是在 limit 之下.设置过高的变量,可能会导致太多DB负载,但过低的trackers 不能从队列中提前获得. 可在一次队列可能完成的总的 FID 的数量高达 queue_size_for_fsck + queue_rate_for_fsck.
* FSCK code has new tunables to control how aggressive it runs:
queue_size_for_fsck (how many fids to keep in file_to_queue table)
queue_rate_for_fsck (how many fids to put into the table per second)
the generic internal queue is now tunable:
internal_queue_limit (how many fids to pull out of a queue table at
once. old default was 500).
All are tunable by 'mogadm settings set'
(dormando)