我想重放 IIS 或 Tomcat 访问日志以进行负载测试。访问日志仅包含 Get 请求,因此会话数据/发布数据在这里不是问题。但是默认 IIS 和 Tomcat 日志中存在两个时间问题
访问日志的“时间”条目以 1 秒为单位,例如“06/Aug/2011:17:51:52 +0800”。因此,当 1 秒内进入的请求未知时,它们可能以突发方式或均匀方式进入。响应时间会有所不同,但不知道差异有多大。
访问日志“时间”条目记录请求完成时间而不是请求到达时间。请参阅Tomcat 时间,IIS 日志时间如果有“time-taken”字段,我们可以从“time”中提取“time-taken”来获取到达时间,但真正的问题是默认情况下不记录“time-taken”。在我看来,解决这个问题的唯一办法就是说服客户打开“time-taken”。
这两个问题都可以通过修改默认记录器来解决,但这是最后的手段。是否有任何解决方法或技巧可以测量或计算正确的“时间”,以便可以将其用于负载测试。
答案1
不,您无法生成比您测量的数据更准确的数据。您可以尝试模拟一些接近您想要的东西(例如假设均匀分布,或者只是在第二个开始的时候全部转储),但最好的方法是改进您的测量。您可以通过数据包捕获在带外进行此操作,而无需修改应用程序(这也可以解决“完成时记录”问题);您只需捕获带有 HTTP 请求和(以毫秒为单位)时间戳的数据包并将它们写出到某处。