0

我遇到了一个瓶颈,即无论我做了什么调整,我的服务器都无法通过 20000x40000 基准测试。该服务器有 128G 内存和一个至强 6 核 cpu,centos5.6-64bit,状态良好。

我尝试组合,包括:

nginx + uwsgi + python2.7
nginx + apache + mod_wsgi + python2.7
apache + mod_wsgi + python2.7

他们都无法通过 apache 基准测试:

ab -c 20000 -n 40000 (without -k)

巧合的是,几乎所有测试都失败了大约 32000 个请求

关于 nginx 和 uwsgi 的详细信息:

nginx:

worker_processes  24
use epoll
worker_connections  65535

uwsgi:

listen 2048
master true
workers 24
uwsgi -x /etc/uwsgi_conf.xml --async 256 --file /var/www/example.py &

有人对此有任何想法吗?提前感谢任何可能的解决方案和建议

4

1 回答 1

2

在单个系统上允许如此多的并发连接需要大量内核调整,并且您可能永远无法在生产中管理此类负载。

首先,您必须增加临时端口的数量、套接字积压队列、每个进程允许的文件描述符数量等等......

除此之外(应该已经足以阻止这种不切实际的测试),您应该将 uWSGI 中的异步核心数量增加到 20k。taht 没有问题(每个内核消耗的内存不到一页),但您的系统中至少会打开 40k 的套接字。

这是针对 nginx+uwsgi 的。

使用 Apache,您将以 20k 进程或线程结束,这比 40k 打开的套接字还要糟糕。

于 2011-09-27T08:22:09.923 回答