【问题标题】:How to simulate a slow network condition to specific port numbers如何模拟特定端口号的慢速网络状况
【发布时间】:2018-09-01 11:42:45
【问题描述】:

有几个问题是关于工具或设置的答案,用于模拟不同操作系统上的慢速网络状况,例如

不幸的是,答案没有提到我的案例的解决方案,所以它不是多余的或重复的。

我正在使用 Redis 缓存和 MySQL 数据库开发一个 Web 应用程序(在本地,在 macOS 上使用 Node.js / Express,但这并不重要)。

为了在我的本地机器上进行一些(性能)测试,我想在该应用程序上加载负载(例如使用abJMeter)。显然,因为 Redis 缓存和 MySQL 数据库与 Web 应用程序运行在同一台机器上,所以我在这三个组件之间有一个很好的网络连接(如:无)。

我想通过将虚拟“连接”降级到 Redis 和 MySQL(但每个连接具有不同的延迟和带宽设置)来模拟这些组件之间的不同网络连接 - 就像在具有多个服务器的生产设置中的情况一样。连接可以通过端口号来区分,但不能通过主机名(这三个都是localhost)。

如何在同一台机器上模拟特定端口号的不同网络连接条件?

【问题讨论】:

  • 如果在 Docker 容器中“包装”Redis 缓存和 MySQL 数据存储提供了一个解决方案——容器之间的网络条件是否可以设置或降级? ——这也可能是有效的。然后问题转移到“在哪里/如何指定这些设置?”

标签: caching web-applications network-programming database-connection simulation


【解决方案1】:

也许这会对你有所帮助:http://intrarts.com/throttledcli.html

实际上你问的是或多或少的 QoS 功能。

但是...在我看来,这不是一种非常有效的测试网络应用程序的方法。首先,我更喜欢模拟应用程序中的网络接口。通过这种方式,您可以更精确地控制所有类型的超时、停机时间、连接中断、同步。

【讨论】:

  • “这不是测试网络应用程序的一种非常有效的方法” - 我知道。我只是想感受一下,比较一些缓存逻辑的策略。 “模拟应用程序中的网络接口” - 是的,但是我需要在代码中实现所有类型的网络逻辑(超时、延迟、丢弃的数据包)。我想在我的代码“外部”配置该代码,因为我在生产设置中也不需要该代码。
  • “实际上你问的是或多或少的 QoS 功能。”确实,我想要一种简单的方法来指定 QoS 特性(与网络相关)在我的应用程序之外并且仅在一台机器上
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2011-02-27
  • 2012-04-09
  • 2010-11-08
  • 2010-12-22
  • 1970-01-01
  • 2017-12-09
  • 1970-01-01
相关资源
最近更新 更多