0

这是一个普遍的问题。假设服务器有并发问题。客户端可以同时发送多个请求来触发问题。那么如何让问题更频繁地发生呢?

  1. 客户端需要足够快以同时发送更多请求

  2. 服务器需要足够快

他们会帮助重现问题吗?或者是否相反?服务器需要慢吗?

编辑1:我认为这是一个竞争条件并发问题。多个线程使用同一个对象,但该对象不是线程安全的。

我主要关心的是假设我们有一个每秒发送一些请求的客户端,使用更快的服务器或更慢的服务器更容易重新创建问题?

4

2 回答 2

0

如果您想让问题发生得更多,那么同时获得更多活跃的客户端,或者让您的客户端使用自动循环来提交导致问题的 API 命令。

我假设您想让问题发生,以便您可以确定它发生的原因?

于 2012-07-18T19:28:27.493 回答
0

如果您正在谈论锁争用并发问题,那么我会说快速(或多个)客户端和慢速服务器。在锁中花费的时间越多越好。

如果您在想要高水平的随机性时谈论竞争条件 - 不同的服务器性能水平。服务器上的大量连接也会对此有所帮助,但您需要尝试各种不同的服务器负载。从一些客户端开始以确保并发性,然后增加吞吐量,直到您淹没服务器。

我怀疑重新创建您的问题将会受到打击和错过。添加或记录消息时要小心,System.out因为这会改变同步模式。

编辑:

如果您谈论的是非线程安全对象上的读/写竞争条件,那么我会说您想要尽可能多的不同性能级别。竞态条件都是关于线程时间片何时完成并且线程被换出、缓存内存刷新时间、其他线程何时在编写器线程运行的同时运行以及操作的顺序。

同样,我会编写您的客户端,以便它们启动缓慢,然后构建,以便服务器将受到不同程度的负载。

于 2012-07-18T19:31:04.220 回答