使用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/
在直接现场帮助和使用agent-0007进行调试后,我们发现了几个问题。
其中大多数都与缓慢的虚拟环境(使用了openvz)有关,这表明io时间不足。
这个问题也与蜘蛛抱蛋做慢选择有关吗?
此外,还有一些关于慢速磁盘的建议:如果可能,尝试将WAL和Tarantool快照或Sophia存储放在单独的磁盘上。
snap_dir、wal_dir和sophia_dir选项:http://tarantool.org/doc/book/configuration/index.html#basic-参数
谢谢。
消息“太长的wal写入”意味着在将更新写入.xlog文件之间经过了太长的时间(“太多”在这里意味着“超过了Tarantool的配置参数太长的阈值”)。
有两个常见的原因:1)磁盘速度慢2)应用程序方面的问题。
要了解原因性质,请以1s的间隔启动top
,查看“过长”事件期间发生的情况:disk util
表示磁盘问题<代码>cpu util表示应用程序问题。
针对慢速磁盘问题的建议解决方案是分批写入对预写日志的更改,其中每个批都封装在单个事务中。这将为每个事务只提供一次磁盘写入。在这种情况下,您不需要收益(请参阅关于fiber.yield的注释,详见下文)。
典型的应用问题如下:
>
你启动了太多的光纤(所以,由于连续的光纤切换,在下一次WAL写入之前可能会经过太多的时间);
在耗时的操作(如进行全扫描搜索、删除大量记录等)中不会产生任何收益。
关于收益率的说明:
您需要使用fiber.yield()生成明确的产量。
- 您不需要将耗时的操作转移到专用光纤上;您也可以在主循环中启动它们,比如说
require('fiber')
,偶尔在您的程序周期中产生控制(但不太频繁,在过长\u threshold
中指定的间隔内多次就足够了)
在优化应用程序代码时,请记住一个Tarantool实例只能使用一个CPU内核,因此增加CPU内核数量是没有用的——唯一的解决方案是确保光纤之间的适当控制产量。
我们正在使用Tarantool 1.5,对配置选项有疑问:如果我们设置以下选项: 这是否意味着fsync(2)根本不会被调用?
有什么方法可以命名与SQL中的列相似的字段吗? 这个想法是,我可能想插入一个客户记录:-姓名-电话-电子邮件-网站 某些字段有时可能存在,而其他字段可能不存在,并且它们可能以不同的顺序出现。 是否有其他方法将记录插入到按字段名引用它们的元组中? 伪代码的东西,比如:
我已经安装了tarantool(tarantool_box)和tarantool客户端。我可以开始塔兰托了 但是当我试图连接到服务器时 我只看到管理员控制台 并且只能使用一些命令和类似sql的查询。我无法使用《用户指南》中的任何命令,并且几乎所有以开头的命令都会失败:
有几种方法可以在中获得时间: 使用模块 但是什么是处理日期的正确方法呢?
问题内容: 在使用Mocha和babel编译器运行istanbul时遇到一些问题。 我所有的测试都运行良好,但是在完成所有测试后,它向我显示以下消息: 而且它没有产生任何覆盖率报告。 我正在运行的命令是: 该项目托管在github中:https : //github.com/weslleyaraujo/react-flux- puzzle/tree/feat/unit-tests-24 有什么想法