Articles of uwsgi

Django,uWSGI和Supervisordconfiguration

好吧我有Django,nginx和uWSGI设置在我的服务器上…问题是我通过这个命令手动启动uWSGI: uwsgi -s /home/user/sites/sock/uwsgi.sock -t 10 -M -p 1 -C -pythonpath / home / user / sites / -w mysite.django_wsgi 而且工作很好。 我想要做的事情是使用supervisord来控制uWSGI进程(启动,停止等)。 我将如何做到这一点,supervisordconfiguration是什么样子?

Nginx + uWSGI在新鲜的Ubuntu安装 – 绑定错误端口80

我知道这是一个常见的问题,通常与Apache或其他已经在端口80上运行的服务有关,我已经做了大量的search和运行netstat,仍然没有find为什么我得到这个错误。 我重build了我的切片,重新安装了Ubuntu 10.04并安装了nginx + uwsgi。 它的工作,我能看到我的Django网站。 然后我从这个链接安装了Postgres8.4和Geodjango所需的其他堆栈。 之后,我试图重新启动nginx,我得到这个错误: sudo /etc/init.d/nginx start Starting nginx: the configuration file /usr/local/nginx/conf/nginx.conf syntax is ok configuration file /usr/local/nginx/conf/nginx.conf test is successful [emerg]: bind() to 0.0.0.0:80 failed (98: Address already in use) [emerg]: bind() to 0.0.0.0:80 failed (98: Address already in use) [emerg]: bind() to 0.0.0.0:80 failed (98: Address already in […]

nginx性能超过1k req / s

我正在尝试将nginx安装扩展到最好的能力。 我正在运行一个具有6个worker_processes(6个核心)和5个后端服务器的nginx实例,每个服务器由10个工人组成的uwsgi设置组成。 (共有50名工人)。 不过,我尝试使用不同参数(使用ab )进行全连接和并发连接的任何基准testing似乎都以约1000个请求/秒的速度出现。 我已经禁用所有的日志loggingnginx和uwsgi(为了避免由于磁盘问题而变慢)。 我正在testing一个仅仅发送{'status':'ok'}的Flask python应用程序。 没有数据库访问,没有计算,没有。 nginxconfiguration的相关部分如下所示: user www-data; worker_processes 6; worker_rlimit_nofile 100000; pid /var/run/nginx.pid; events { use epoll; worker_connections 2048; multi_accept on; } http { ## # Basic Settings ## sendfile on; tcp_nopush on; tcp_nodelay on; keepalive_timeout 65; types_hash_max_size 2048; # server_tokens off; # server_names_hash_bucket_size 64; # server_name_in_redirect off; include /etc/nginx/mime.types; […]

NGINX忽略服务器块中的上游

这是我的/etc/nginx/nginx.conf文件的样子(按照nginx -T ): # configuration file /etc/nginx/nginx.conf: # For more information on configuration, see: # * Official English Documentation: http://nginx.org/en/docs/ # * Official Russian Documentation: http://nginx.org/ru/docs/ user nginx; worker_processes auto; error_log /var/log/nginx/error.log; pid /run/nginx.pid; # Load dynamic modules. See /usr/share/nginx/README.dynamic. include /usr/share/nginx/modules/*.conf; events { worker_connections 1024; } http { log_format main '$remote_addr – $remote_user [$time_local] […]

在Ubuntu上启动uWSGI时,opendir():没有这样的文件或目录

我试图在Ubuntu 12.04上启动uWSGI。 在$ sudo service uwsgi start或# uwsgi –ini /usr/share/uwsgi/conf/default.ini –ini /etc/uwsgi/apps-enabled/file.ini ,我收到以下错误: opendir(): No such file or directory [uwsgi.c line 471] 第一个调用将此错误logging到/var/log/uwsgi ,第二个将此错误输出到stdout 。 怎么了?

(nginx – > uwsgi – > wsgi应用程序)体系结构中的IPC开销?

最近我正在build立一些Python网站,看来架构nginx -> uwsgi -> wsgi application在Python世界中是一个显而易见的select。 (其实我正在将一个由Apache + mod_wsgi支持的MoinMoin网站迁移到一个运行nginx的新VM上,所以我花了一些时间来看看nginx支持的部署可能性。) 我已经读了很多关于为什么需要这样的间接层,我完全知道,涉及到的各种技术 – nginx,uwsgi和wsgi – 都是现代的,function非常高,性能非常高,到今天为止都是成熟的。 但是由于在这样的体系结构中有两层IPC( nginx -> uwsgi和uwsgi -> wsgi application ),我一直在想 IPC如何影响整体performance? 是否具有足够的影响力,具有实际意义? 我search了一下,发现没有直接的答案。 那么IPC的开销是否足够小,或者我没有find正确的关键字? (顺便说一下,我读到Erlang社区已经生成了几个HTTP服务器,直接将用户的HTTP请求传送到应用程序代码,并且性能也非常高,我search了一下,但是找不到比较这两种方法的基准)

应用程序报告超时。 然而nginx没有logging或日志

我们通过nginx / uwsgi服务于Django。 我们在VPC后面使用AWS ELB。 这是移动客户端的web服务。 我们在开发过程中报告了超时,所以我们为每个请求添加了一个request_id的概念 客户端生成请求标识 发送GET / request?_request_id = ABDFEFE 如果发生错误,则将错误与请求ID一起报告给服务器 我现在遇到的问题是我得到了在野外发生的超时错误报告。 但是,相关的request_id不会显示在任何nginx或uwsgi日志中。 我有点怀疑亚马逊弹性负载平衡器。 但是我不能确定。 由于这是一个超时我们没有ELB标题看,或状态码或响应身体或任何东西。 我们使用newrelic来监视我们的后端。 偶尔会logging3-4秒的“慢速交易”。 (没有像大多数客户端库中典型的30秒超时) 实际的问题:下一步看什么? 根据我和我在服务器上的数据,NOTHING实际上是错误的,但超时仍然存在。 在这一点上,我甚至不知道如何开始debugging。 应用程序服务器运行在10%的容量(对于mem和cpu)缓慢的sql查询正在被logging(没有什么有趣的) (我也在分别查看客户端错误) 提前致谢。

设置Nginx,uwsgi为非root用户位置的RAILS应用程序

我已经build立并运行了一个RAILS应用程序(graylog2),下面的configuration使它适用于根目录: server { server_name www.mydomain.com; location / { gzip off; uwsgi_modifier1 7; include uwsgi_params; uwsgi_pass 127.0.0.1:3033; } } 但我想把我的应用程序放在一个path,例如: /graylog2 我改变了我的configuration,添加了uwsgi_param SCRIPT_NAME /graylog2但没有奏效。 server { server_name www.mydomain.com; root /opt/graylog2-web-interface/public/; location /graylog2 { gzip off; include uwsgi_params; uwsgi_param SCRIPT_NAME /graylog2; uwsgi_modifier1 7; uwsgi_pass graylog2; } location / { autoindex on; } } 我使用Ubuntu 12.04.1 LTS,nginx / […]

Nginx / uWSGI – 从上游读取响应头时,上游过早closures连接

我有一个configuration了Nginx和uWSGI的Ubuntu服务器来服务Django,它是昨天设置和使用默认开始页面的。 我所做的一切都是安装MySQL和后来的Pos​​tgreSQL,并将db设置添加到Django中,现在我在uwsgi错误日志中upstream prematurely closed connection while reading response header from upstream错误upstream prematurely closed connection while reading response header from upstream得到一个502网关错误和upstream prematurely closed connection while reading response header from upstream 。 我已经看了一下,我看到有人build议这可以涉及到超时设置,人们已经修复它只是通过重新安装PHP,但我想明白这是什么意思,希望如何解决它。 有人可能为我揭示一些事情吗? 我的uWSGIconfiguration看起来像这样; # config plugins = python master = true protocol = uwsgi env = DJANGO_SETTINGS_MODULE=%(projectname).settings pythonpath = %(base)/src/%(projectname) module = %(projectname).wsgi socket = […]

如何告诉uWSGI优先进程到线程进行负载均衡

我已经在具有3个CPU核心的VDS上安装了Nginx + uWSGI + Django。 uWSGI为每个进程configuration6个进程和5个线程。 现在我想告诉uWSGI使用进程进行负载平衡,直到所有进程都忙碌,然后在需要时使用线程。 看来uWSGI更喜欢线程,我还没有find任何configuration选项来改变这种行为。 第一个进程占用了100%的CPU时间,第二个占用了大约20%,另外一个进程大部分都不使用。 我们的网站收到40 r / s。 实际上,即使有3个进程没有线程,通常是处理所有的请求。 但是由于诸如locking共享资源等各种原因,请求处理会不时挂起。在这种情况下,我们有-1个进程。 用户不喜欢等待,然后再次点击链接。 因此,所有进程都会挂起,所有用户都必须等待。 我会添加更多的线程,使服务器更健壮。 但问题可能是pythonGIL。 线程不会使用所有的CPU核心。 所以多个进程在负载平衡方面效果更好。 但是,如果locking共享资源和I / O等待延迟,线程可能会有很大的帮助。 一个进程可能会做很多工作,而其中一个线程被locking。 我不想减less时间限制,直到没有其他解决scheme。 理论上可以用线程来解决这个问题,我不想给用户显示错误信息,或者让他在每个请求中等待,直到没有其他select。