.NetCore/NEST - ElasticSearch I/O 问题或并发限制

如何解决.NetCore/NEST - ElasticSearch I/O 问题或并发限制

我几个星期以来都遇到了一些问题,经过多次尝试仍无法解决我有一个 .NET Core 应用程序,它基本上整天都在索引和搜索文档。 这个应用程序允许在我的所有用例中并发调用 Elastic,所以当我有一个负载(比如几秒钟内 1k 个文档)时,我会无限制地调用 Elastic(我没有找到任何限制,也许我应该限制线程...)。 我在生产中有 2 个 ElasticSearch 节点,它们为我的负载配置了相当不错的配置(根据 Elastic 先决条件)、16Go RAM、4vcpu

有时,似乎许多调用都因这种错误而失败(我正在使用 ApplicationInsights):

AppInsights logs

我假设 nesT 正在与只是超时/失败的弹性服务器建立底层 HTTP 连接。 当我同时查看依赖项时,我可以看到运行超过 100 000 毫秒的调用(但“正常”调用需要 4 毫秒)

这是一个索引示例:

Put example from AppInsights

我们的团队检查了所有通过网络的 http 路由,我们找不到任何网络问题。

当我们刚刚在两个节点上重新启动 Elastic 服务并且一切都重新开始工作时,我们绝对明白这是一个 Elastic 问题。 两个节点的 cpu 和 RAM 使用率都很低。 我们“尝试”查看 Elastic 日志,但实际上我们对此不太满意,但根据我们的“知识”,我们没有发现任何“异常”。

我们正在一份一份地索引文档,从不批量化。我们无法改变这一点,因为由于 ServiceBus 队列,文档是从外部系统接收的,而且我们无法控制负载。因此,一条 ServiceBus 消息是对弹性服务器的单独 PUT 调用

老实说,我无法轻松重现它,但我希望使用 nesT/ElasticSearch 的人们提供一些反馈以及他们如何管理他们的线程池。

我是否应该限制弹性调用(例如使用信号量)?

我应该更改弹性服务器配置吗?

如果您需要更多信息,请告诉我

感谢您的帮助

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其他元素将获得点击?
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。)
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbcDriver发生异常。为什么?
这是用Java进行XML解析的最佳库。
Java的PriorityQueue的内置迭代器不会以任何特定顺序遍历数据结构。为什么?
如何在Java中聆听按键时移动图像。
Java“Program to an interface”。这是什么意思?
Java在半透明框架/面板/组件上重新绘画。
Java“ Class.forName()”和“ Class.forName()。newInstance()”之间有什么区别?
在此环境中不提供编译器。也许是在JRE而不是JDK上运行?
Java用相同的方法在一个类中实现两个接口。哪种接口方法被覆盖?
Java 什么是Runtime.getRuntime()。totalMemory()和freeMemory()?
java.library.path中的java.lang.UnsatisfiedLinkError否*****。dll
JavaFX“位置是必需的。” 即使在同一包装中
Java 导入两个具有相同名称的类。怎么处理?
Java 是否应该在HttpServletResponse.getOutputStream()/。getWriter()上调用.close()?
Java RegEx元字符(。)和普通点?