如何使用Nginx + uWSGI加速文件上传

时间:2014-12-25 08:36:00

标签: nginx amazon-ec2 uwsgi

我已经使用nginx内置功能 clientbodyinfileonly 来上传我的文件。并且为了了解它的表现。我使用Apache ab来测试它。

当我将并发级别设置为 100 时,

ab -n 10000 -c 100 -p xxxx.rar -T application/x-www-form-urlencoded http://??????

结果是

Requests per second:    1477.95 [#/sec] (mean)

并发级别设置为120时,我遇到502错误。

connect() to unix:/???/uwsgi.sock failed (11: Resource temporarily unavailable) while connecting to upstream

如下所示的nginx配置[访问Nginx direct file upload without passing them through backend了解更多详情]

location /upload {
        auth_request               /upload/authenticate;

        client_body_temp_path      /tmp/;
        client_body_in_file_only   on;
        client_body_buffer_size    16M;
        client_max_body_size       80M;

        uwsgi_pass_request_headers on;

        uwsgi_param                X-FILE $request_body_file;
        uwsgi_pass_request_body    off;
        uwsgi_pass                 unix://tmp/uwsgi.sock;
        include  uwsgi_params;
}

location = /upload/authenticate {
        uwsgi_pass              unix://tmp/uwsgi.sock;
        uwsgi_pass_request_body off;
        uwsgi_param             CONTENT-LENGTH "";
        uwsgi_param             X-Original-URI $request_uri;
        include  uwsgi_params;
}

我采用的方式是提供更多的后端服务器以及上游指令。现在502消失了。但是,无论我添加了多少uWSGi实例,TPS仍然小于1600 [实际上,我最多使用8个实例,每个实例有2个进程]。

我还在加载测试期间查看了cpu,内存使用情况[top,free,vmstat]。它们不是太高。

为什么即使我使用了更多的uWSGI实例,性能也不会变得更好?我怎么知道在哪里优化?

使用的机器是具有2个CPU(2.5GHz),4G内存的AWS EC2。用于上传的文件大小为30K。

0 个答案:

没有答案