gpt4 book ai didi

c - 我的服务器通过网络每秒的请求非常低

转载 作者:行者123 更新时间:2023-11-30 16:37:08 24 4
gpt4 key购买 nike

我正在编写一个 HTTP/2 服务器,目前进展顺利。我现在正在尝试优化服务器,所以我在它和 nginx 之间做了一些基准测试。当本地运行服务器并在同一台机器上运行基准测试工具(h2load)时,nginx 每秒收到大约 2200 个请求,而我的服务器每秒收到大约 1600 个请求,这与我的预期差不多。我还有很大的优化空间。

但是,当我通过网络进行测试时,即从远程计算机运行基准测试工具时,nginx 保持在大约 1800 个请求/秒,但我的服务器下降到大约 90 个请求/秒。这向我表明,与其他任何地方相比,我在 I/O 处理方面存在瓶颈。我用 callgrind 和 gperftools 做了一些分析,但我看不到任何明显的原因会导致如此巨大的速度下降。我认为这可能与我处理传出写入的方式有关,因为我每个请求写入大约 4 个小 TLS 记录,每个记录 100-600 字节。我还决定使用 TCP_NODELAY,因为如果我不使用它,那么它会进一步下降到每秒 3 个请求(如果我使用 TCP_CORK,它会下降到相同的水平)。

我有两个问题:

1) 如何找到导致性能下降的瓶颈?

2) 假设我对传出写入的缓冲不良是导致此处速度下降的主要原因。我可以使用哪些缓冲策略来提高性能?看来无论哪种方式,我都会陷入分配比实际需要的数据太多的可能性,或者最终重新分配太多次,或者由于无法在发送数据之前重新排序数据而糟糕地安排传出写入。是否有任何资源可以更详细地解释这一点?

源代码是here如果您有兴趣。

最佳答案

首先,祝贺您的项目并祝您好运,它看起来确实令人印象深刻。

现在:我预测您的并发套接字工程存在问题。我对网络服务器级别的套接字编程没有丰富的经验。不过我知道 Linux 套接字可以针对任何给定情况进行大量优化。在本地主机上优化使用的套接字并不总是在网络上优化(即,TCP_CORK 在本地主机上确实有奇迹)。特别是,某些套接字配置(和利用率)在多线程/多进程网络系统中效果最好。

我建议你去咨询专家。我怀疑你会在 StackOverflow 上找到一个闲逛的人。

关于c - 我的服务器通过网络每秒的请求非常低,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48099775/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com