我正在编写一个服务器应用程序,它应该提供很多请求。我试着做一些测试,发现我对服务器吞吐量有一些限制。我目前的猜测是TCP处理的瓶颈。
我的问题是:我如何确认或反驳我的猜测?我应该关注哪些指标以及可以将哪些值视为线索?我也很感激任何有关使用工具的建议。
服务器的操作系统是Linux。我的应用程序是用Java编写的。请随意在评论中询问更多信息。
PS我不确定应该在哪里发布这个问题。可能应该将其移至serverfault?
UPD:这是一项http服务,当前吞吐量约为450 req / sec,平均响应大小约为20 KB。请注意,它为mongodb执行了6-8个请求,并为每个客户端请求执行了一个memcached请求。
UPD2:我忘了一个非常重要的一点:网络接口未得到充分利用,1Gb只使用了80-100Mb。应用服务器和数据库上的CPU和内存也未加载。答案 0 :(得分:3)
如果您还没有,我建议在服务器应用程序上实现一些日志记录。该应用程序应至少打印这些统计信息:
这可以帮助您确定瓶颈是TCP开销还是您的应用程序。如果您想要一个快速而肮脏的视图,您可以使用WireShark来查看最后一个请求数据包进入和特定事务的第一个响应数据包之间的时间。但是,使用WireShark手动测量许多交易将很困难,并且从长远来看,具有良好的日志记录可能会帮助您解决问题。
祝你好运!