5

我想在特定连接上关闭 Nagle 算法(在我的情况下 - 到 ElasticSearch 服务器)。

我的代码目前看起来像这样:

ServicePointManager.FindServicePoint(new Uri(uriWithoutLocalPath)).UseNagleAlgorithm = false;

问题是ServicePoint对象在一段时间后被回收,这导致它丢失了设置。因此,我不能只在系统启动时运行此代码一次。看来我面前有几个选择:

  1. 全局关闭 Nagle 算法(因此,影响我不想影响的连接)。
  2. 增加MaxServicePointIdleTime,以便ServicePoint永远不会被回收(可能是个坏主意?我的直觉告诉我)。
  3. 设置某种计时器,每 N 秒重置一次属性,其中 N 小于 a 的回收时间ServicePoint
  4. 每次使用连接时重置属性。

我真的不喜欢这些选项中的任何一个,它们要么会影响系统中的其他东西,要么对于我想做的事情来说似乎太复杂了(比如计时器选项)。在我看来,应该有一个简单的解决方案。想法?

4

0 回答 0