我试图在http://dont-tread-on-memes.controversial.io上写一个networking服务作为一个笑话。 这是一个烧瓶应用程序,提供相当大的图像。 Flask应用程序可以独立运行,就像一个独立的uWSGI服务器一样,但是当我尝试通过uwsgi_pass将uWSGI插入到NGINX中时,突然间所有其他的请求在浏览器中被截断为9.99KB。 阅读与proxy_pass类似的截断之后,我试过: 在我的configuration文件中设置uwsgi_buffering off 使用uwsgi_buffers 1024 1024k; uwsgi_buffer_size 1024k;将缓冲区大小1024k uwsgi_buffers 1024 1024k; uwsgi_buffer_size 1024k; uwsgi_buffers 1024 1024k; uwsgi_buffer_size 1024k; sendfile: off 检查缓冲区文件权限( /var/lib/uwsgi中的所有文件都由www-data用户和www-data组拥有,所以我认为我的权限很好。) 我留下了我目前的configuration,这仍然performance出这个问题: server { listen 80; server_name dont-tread-on-memes.controversial.io; location / { include uwsgi_params; uwsgi_pass unix:/var/www/dont-tread-on-memes/dont_tread_on_memes.sock; uwsgi_buffers 1024 1024k; uwsgi_buffer_size 1024k; } } 最奇怪的部分是,这个问题只出现在第二个请求。 它必须与NGINXcaching有关,因为我没有使用多个NGINX实例或任何东西。 然而它必须与我的NGINXconfiguration有关,因为uWSGI自己运行不会出现问题。 有什么想法可能导致这个问题,以及如何解决它?
我有nginx提供由uwsgi驱动的django应用程序。 偶尔我得到504的,并希望增加超时。 当使用nginx uwsgi模块时,是否需要使用特殊的参数来解决可能的超时问题,或者我可以使用标准的吗?
在一个4芯的盒子上,哪个场景设置得更好: 4 uWSGI用深队列处理请求 8个具有深队列的uWSGI进程 像服务器的内存一样,许多进程允许一个相对较浅的队列?
所以我写了这个简单的systemd服务脚本: [Unit] Description=uwsgi server script [Service] User=web Group=web WorkingDirectory=/var/www/prod/myproject/releases/current ExecStart=/bin/bash -c 'source ~/.bash_profile; workon myproject; uwsgi –ini /var/www/prod/myproject/releases/current/myproject/uwsgi_prod.ini' [Install] WantedBy=multi-user.target 工作正常 – 它启动,我可以看到我的uwsgi进程htop 。 但是,闲置5分钟后莫名closures。 如果我在bash控制台手动启动这个过程,通过执行,作为web用户: – source ~/.bash_profile workon myproject uwsgi –ini /var/www/prod/myproject/releases/current/myproject/uwsgi_prod.ini 我的过程闲置后不会死亡。 问题是什么?
我正在运行一个Django应用程序,在nginx后面使用uWsgi。 我一直在使用ApacheBench进行一些性能调优和负载testing,并且发现了一些意想不到的东西,不知有人能为我解释。 在我的Nginxconfiguration中,我有一个rewrite指令,它可以捕获很多不同的URL排列,然后将它们转发到我希望使用的规范URL,例如,它可以捕捉www.mysite.com/whatever,www.mysite.co.uk/whatever并转发给http://mysite.com/whatever 。 如果我用任何一个redirectURL(即不是最终转发的规范URL)加载testing,它可以服务15000个并发连接,而不会出汗。 如果我加载testing反对规范的URL,上面的testing,我会期望得到转发到任何地方,它不能处理的差不多。 在15000个请求中将会减less4000个,只能可靠地处理9000个。 这是我用来testing的命令行: ab -c15000 -n15000 http://www.mysite.com/somepath/ 和 ab -c15000 -n15000 http://mysite.com/somepath/ 我已经尝试了几种不同的types – 这与我做它们的顺序没有什么不同。这对我来说没有任何意义 – 我可以理解为什么涉及redirect的请求可能无法处理太多的并发连接,但是正在发生另一边。 谁能解释一下? 如果规范的URL可以处理更多的stream量,我真的更喜欢它。 我将在下面发布我的Nginxconfiguration。 感谢加载任何帮助! server { server_name www.somesite.com somesite.net www.somesite.net somesite.co.uk www.somesite.co.uk; rewrite ^(.*) http://somesite.com$1 permanent; } server { root /home/django/domains/somesite.com/live/somesite/; server_name somesite.com somesite-live.myserver.somesite.com; access_log /home/django/domains/somesite.com/live/log/nginx.log; location / { uwsgi_pass unix:////tmp/somesite-live.sock; include uwsgi_params; […]
所以我有一个应用程序运行在Nginx上使用uWSGI。 Nginx设置为在位置/应用程序中调用我的应用程序。 所以在我的烧瓶应用程序中,当我将url映射到一个函数时,我必须考虑/ app部分。 有没有办法重写nginx文件或uwsgi config.xml文件让应用程序认为它是从/目录运行? 有没有副作用? 举个例子: 页面http://mysite.com/app/链接到我的index.py模块 我的index.py模块使用Flask,所以路由映射如下所示: @app.route('/app/') def hello_world(): return 'Hello World!' 我想知道如果我可以改变configuration文件,所以我可以写: @app.route('/') def hello_world(): return 'Hello World!' 代替?
我有一个单独的域,其中根由uWSGI下运行的python应用程序提供服务。 然而,我需要在子文件夹/论坛/上运行PHP论坛。 我在apps-availableconfiguration文件中有以下内容: location / { try_files $uri @oath; } location @oath { include uwsgi_params; uwsgi_pass 127.0.0.1:3031; } location /forum/ { alias /home/drake/forum; index index.php; } location ~ /forum/(.*)\.php { include /etc/nginx/fastcgi_params; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; fastcgi_pass 127.0.0.1:9000; } 然而, example.com/forum/ forum/被发送到uWSGI应用程序和example.com/forum/index.php ,同时被交给FastCGI,返回File not found. 并将以下内容logging到error.log : 2013/03/03 00:10:52 [error] 28102#0: *1 FastCGI sent in stderr: […]
我使用nginx作为一个烧瓶应用程序的代理,以uwsgi作为中间件。 这是我testing应用程序的nginxconfiguration。 server { listen 80; server_name test.myapp.com www.test.myapp.com; charset utf-8; client_max_body_size 250M; location / { try_files $uri @testapp; } location @testapp { include uwsgi_params; uwsgi_pass unix:/tmp/testapp_uwsgi.sock; } location /forecaster/components/ { alias /opt/test/client/app/components/; } } 我很确定,虽然nginx实际上并没有提供静态文件,即使我注释掉了location块,文件也得到了某些东西。 我在nginx日志中看到了200个,在uWsgi日志中看到了200个。 你怎么知道哪一个服务于静态文件? 我想烧瓶应用程序可以为他们服务呢? / opt / test / client / app / components /肯定存在,并且对其他人可读。 有没有办法强制uwsgi不处理这些请求?
uWSGIconfiguration: <uwsgi> <module>app_wsgi:app</module> <pythonpath>./src</pythonpath> <socket>/tmp/uwsgi.sock</socket> <pidfile>/tmp/uwsgi.pid</pidfile> <daemonize>uwsgi.log</daemonize> </uwsgi> buildout.cfg [buildout] parts = eggs uwsgi versions = versions include-site-packages = false [eggs] recipe: zc.recipe.egg:eggs eggs = flask [versions] flask = 0.9 [uwsgi] recipe: buildout.recipe.uwsgi version = 1.4.3 例外: *** Operational MODE: single process *** added ./src/ to pythonpath. Traceback (most recent call last): File "./src/app_wsgi.py", line […]
开始:我们正在使用uwsgi,并决定切换我们的configuration以使用更多的工人/stream程。 原因:最近我们看到了stream量的增加,并且在使用apache基准testing的情况下,新的configuration使得更多的工作者和进程performance得更好(更快,更less的请求下降)。 发生了什么事情:在将configuration更改推送到我们的应用程序服务器之后,我们看到了应用程序服务器cpu的一个直接上升(这并不奇怪),而且在我们的mongodb服务器cpu上同样剧增。 有问题的行为:为什么当读取和写入与应用程序configuration更改完全一样时,mongodb cpu或mongo服务器上的其他任何内容是否应该改变? 更多的细节: 我们在Amazon AWS上托pipe所有内容 我们使用一个mongo副本集 辅助mongo服务器受到的影响更大(以及从中读取的应用程序服务器) Mongo版本2.2 编辑:我也注意到,在新的configuration期间,mongo服务器(3倍)的连接数量大幅增加,更多的工作人员=更多的连接?