使用tarantool,为什么我记录这些奇怪的消息:
2016-03-24 16:19:58.987 [5803] main/493623/http/XXX.XXX.XXX.XXX:57295 txn.cc:214 W> too long WAL write: 0.527 sec
2016-03-24 16:20:09.841 [5803] main/493714/http/XXX.XXX.XXX.XXX:57346 txn.cc:214 W> too long WAL write: 0.605 sec
2016-03-24 16:20:12.988 [5803] main/493716/http/XXX.XXX.XXX.XXX:57347 txn.cc:214 W> too long WAL write: 1.682 sec
2016-03-24 16:20:15.023 [5803] main/493717/http/XXX.XXX.XXX.XXX:37825 txn.cc:214 W> too long WAL write: 3.373 sec
2016-03-24 16:20:35.145 [5803] main/494145/http/
答案 0 :(得分:2)
在使用agent-0007直接进行现场帮助和调试后,我们发现了几个问题。
其中大多数都与慢速虚拟环境(使用openvz)有关,这表明io时间不合适。
此问题也与Tarantool sphia make slow selects?
有关此外,还有关于慢速磁盘的建议: 如果可能,请尝试将WAL和Tarantool快照或Sophia存储放在不同的磁盘上。
snap_dir , wal_dir 和 sophia_dir 选项: http://tarantool.org/doc/book/configuration/index.html#basic-parameters
感谢。
答案 1 :(得分:2)
消息“太长的沃尔码写入时间”表示在将更新写入.xlog文件之间已经花费了太多时间(这里的“太多”意味着“比Tarantool的配置参数too_long_threshold中指定的时间还长)”。 / p>
有两个常见原因:1)磁盘速度慢2)应用程序方面的问题。
要弄清原因,请以1秒的间隔启动atop
并检查“过长”事件期间发生了什么:disk util
表示磁盘问题; cpu util
表示应用程序问题。
对于慢速磁盘问题,建议的解决方案是将更改批量写入预写日志,其中每个批次都包装在一个事务中。这将使您每个事务仅写入一个磁盘。在这种情况下,您将不需要收益(请参见有关fiber.yield
的注释)。
典型的应用程序问题如下:
您发射了太多的光纤(因此,由于连续的光纤切换, 下一次WAL写入之前可能要花费很多时间);
您无法在耗时的操作中获得收益(例如 扫描搜索,删除大量记录等)。
关于收益的说明:
require('fiber')
并偶尔在程序中进行收益控制
循环(虽然不是很频繁,但按指定的间隔几次
too_long_threshold
中的数字就足够了。在优化应用程序代码时,请记住,一个Tarantool实例只能使用一个CPU内核,因此增加CPU内核的数量是没有用的-唯一的解决方案是确保光纤之间的控制量正确。