使用 BSD 套接字模拟服务器负载

发布于 2024-11-15 20:40:40 字数 438 浏览 15 评论 0原文

我在 C 中使用阻塞 TCP 套接字,当有许多同时连接时,我想模拟服务器上的高负载,然后我想测量在这个高负载时间内通过浏览器访问服务器所需的时间(服务器理解 HTTP 标头)。 此外,每个客户端请求都会快速结束(发送 HTTP 标头 - 获取文本)。

我该如何做到这一点(不使我的本地计算机崩溃 - >我尝试使用 fork 来创建许多客户端;而且,我也有一个虚拟机)。 如果有人对如何做到这一点有一个想法或一些总体指导,那将意义重大。

编辑:我需要使用自己的客户端运行此程序,该客户端使用 OpenSSL 库的修改版本来连接到我的 SSL/TLS 服务器,因此我无法使用外部测试工具。

我想知道如何构建客户端和服务器。除了阻塞套接字之外,我对其他套接字了解不多,我只是浏览了 Richard Stevens 的《UNIX 网络编程》一书,但我想知道是否有人可以指出确切的解决方案。

谢谢 !

I'm using blocking TCP sockets in C and I want to simulate a high load on the server when there are many simultaneous connections and then I want to measure the time necessary to access the server via a browser during this high load time (the server understands HTTP headers).
Also each client request ends fast (sends a HTTP header - gets text).

How do I do this (without crashing my local machine -> I tried using fork to make many clients; also, I have a virtual machine too).
If anyone has an idea or some general directions about how to do this, it would mean a lot.

Edit: I need to run this with my own client, which uses a modified version of the OpenSSL library to connect to my SSL/TLS server, so I can't use external test tools.

I want to know how to build the client and the server. I don't know too much about other sockets than the blocking ones, I'm just skimming through the UNIX Network Programming book of Richard Stevens, but I was wondering if anyone could point out the exact solution.

Thank you !

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

空名 2024-11-22 20:40:40

最简单的解决方案是下载现有的压力测试框架,例如 fwptt ( http://fwptt.sourceforge.net/ )。

如果您想实现自己的压力测试框架,我建议您放弃代码的阻塞性质,并采用可以完美扩展的并行设计。那么限制因素几乎就是你的CPU。

拥有两台物理服务器是理想的选择,这样您的压力测试就不会影响服务器的 CPU(以及响应时间)。此外,您的虚拟机还会耗尽宝贵的 CPU 时间。

The easiest resolution to this would be to download an existing stress testing framework such as fwptt ( http://fwptt.sourceforge.net/ ).

If you want to implemennt your own stress testing framework, I'd suggest you lose the blocking nature of your code and go with a parallel design that will scale beautifully. The limiting factor is pretty much your CPU then.

Having two physical servers would be ideal, so that then your stress test isn't affecting the CPU (and therefore the response times) of the server. Also that VM of yours drains up precious CPU time.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文