- android - RelativeLayout 背景可绘制重叠内容
- android - 如何链接 cpufeatures lib 以获取 native android 库?
- java - OnItemClickListener 不起作用,但 OnLongItemClickListener 在自定义 ListView 中起作用
- java - Android 文件转字符串
当我们进行大量并行连接时,我们遇到了 mongodb 套接字关闭的问题。
这是一个测试脚本:
var mongodb = require("mongodb");
var async = require("async");
mongodb.MongoClient.connect("mongodb://mongo-dev1:27017/test", function(err, db) {
if (err) { throw err; }
var calls = [];
var col = db.collection("test");
var count = 10000;
for(var i = 0; i < count; i++) {
(function(i) {
calls.push(function(cb) {
console.time("update_" + i);
col.update({ i : i }, { i : i }, { upsert : true }, function(err) {
console.timeEnd("update_" + i);
cb(err);
});
});
})(i);
}
async.parallel(calls, function(err) {
if (err) { throw err; }
console.log("done");
});
});
如果我运行该脚本,它将失败并出现以下错误 MongoError: server mongo-dev1:27017 sockets closed
mongodb本身的日志输出是
SocketException 处理请求,关闭客户端连接:9001 socket exception [SEND_ERROR] server [192.168.1.111:53556]
我无法弄清楚是什么机制导致套接字关闭。我相信等式的 Node 端挂断了,因为我的事件时间显示 Node 关闭事件发生在 mongodb 日志中的 SocketException 之前几毫秒。我已经进入 mongodb
包到 mongodb-core
并做了一些 console.log
事件的发起者是 at TCP.close (net.js:485:12)
。这告诉我套接字本身正在关闭。基于此,感觉就像是 linux 本身正在关闭套接字或 mongoDB 主机盒,而不是 Node 或 MongoDB 在做这件事。不过我不确定如何证明这一点。
这是我考虑过但已排除的第一组选项:
套接字超时 - 如果是超时,则错误消息不同,我在构建连接时通过传递 socketTimeoutMS
选项验证了这一点。如果我传递一些小的东西,我会收到超时错误。
MongoDB 连接不足 - 如果我使用 db.serverStatus().connections
监视 mongodb replset 上的连接,我仍然有大量可用连接。
当我与本地主机非副本集通信时,此行为不会复制。这可能是本地主机的事情,也可能是副本集的事情。
如果我将 parallel 更改为 parallelLimit 100,它会顺利完成。由于 Node 使用连接池,无论我是并行发送 1000 个还是一次并行发送 100 个,它对 MongoDB 的流量应该是相同的,因为它们都被迫进入相同的 10 个套接字。这有助于指导我这是一个 Node 问题。
使用 Node 10、 Node 12 和 MongoDB 2.6
最佳答案
我在重负载下遇到了同样的问题,但是在深入研究 mongodb 驱动程序时,我发现 socketTimeout 和 connectTimeout 的默认值设置为 30000 毫秒。
提高他们都解决了我的问题:
mongodb://m1.url.xyz:27017,m2.url.xyz:27017/test?replicaSet=myset&connectTimeoutMS=300000&socketTimeoutMS=300000&readPreference=secondary
(确保 ulimit 设置和 net.ipv4.tcp_keepalive_time 针对 mongodb 进行了优化) http://docs.mongodb.org/manual/faq/diagnostics/
关于node.js - Mongodb 服务器套接字在 replSet 上关闭,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32128577/
我使用下拉菜单提供一些不同的链接,但我希望这些链接在同一选项卡中打开,而不是在新选项卡中打开。这是我找到的代码,但我对 Javascript 非常缺乏知识 var urlmenu = docume
我对 javascript 不太了解。但我需要一个垂直菜单上的下拉菜单,它是纯 JavaScript,所以我从 W3 复制/粘贴脚本:https://www.w3schools.com/howto/t
我已经坐了 4 个小时,试图让我的导航显示下 zipper 接垂直,但它继续水平显示它们。我无法弄清楚为什么会发生这种情况或如何解决它。 如果有人能告诉我我做错了什么,我将不胜感激。我有一个潜移默化的
我正在尝试创建选项卡式 Accordion 样式下拉菜单。我使用 jQuery 有一段时间了,但无法使事件状态达到 100%。 我很确定这是我搞砸的 JS。 $('.service-button').
对于那些从未访问过 Dropbox 的人,这里是链接 https://www.dropbox.com/ 查看“登录”的下拉菜单链接。我如何创建这样的下 zipper 接? 最佳答案 这是 fiddle
我正在制作一个 Liferay 主题,但我在尝试设计导航菜单的样式时遇到了很多麻烦。我已经为那些没有像这样下拉的人改变了导航链接上的经典主题悬停功能: .aui #navigation .nav li
如果您将鼠标悬停在 li 上,则会出现一个下拉菜单。如果您将指针向下移至悬停时出现的 ul,我希望链接仍然带有下划线,直到您将箭头从 ul 或链接移开。这样你就知道当菜单下拉时你悬停在哪个菜单上。 知
我有一个带有多个下拉菜单的导航栏。因此,当我单击第一个链接时,它会打开下拉菜单,但是当我单击第二个链接时,第一个下拉菜单不会关闭。 (所以如果用户点击第二个链接我想关闭下拉菜单) // main.js
我正在尝试制作一个导航下拉菜单(使用 Bootstrap 3),其中链接文本在同一行上有多个不同的对齐方式。 在下面的代码中,下拉列表 A 中的链接在 HTML 中有空格字符来对齐它们,但是空白被忽略
我希望有人能帮我解决这个 Bootstrap 问题,因为我很困惑。 有人要求我在底部垂直对齐图像和其中包含图像的链接。 我面临的问题是他们还希望链接在链接/图像组合上具有 pull-right,这会杀
我正在构建一个 Rails 应用程序,并希望指向我的类的每个实例的“显示”页面的链接显示在“索引”页面的下拉列表中。我目前正在使用带有 options_from_collection_for_sele
我有以下 Bootstrap3 导航菜单 ( fiddle here )。我想设置“突出显示”项及其子链接与下拉列表 1 和 2 链接不同的链接文本(和悬停)的样式。我还希望能够以不同于 Highli
我对导航栏中的下拉菜单有疑问。对于普通的导航链接(无下拉菜单),我将菜单文本放在 H3 中,但是当我尝试对下 zipper 接执行相同操作时,箭头不在标题旁边,而是在标题下方。我决定用 span 替换
我是一名优秀的程序员,十分优秀!