Articles of django

Nginx / uWsgi / Django站点可以使用重写URL处理更多stream量

我正在运行一个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; […]

configuration专用服务器(Centos)以便为一个网站提供服务的文档和最佳实践

我刚刚买了一台专用的服务器,他们给我提供了一个IP地址,以root身份访问信息,并使用Centos 5。 我想在那台机器上为我的django应用程序服务,但是因为我没有这种服务器问题的经验,所以我不知道最好的办法是什么。 我已经安装了mysql,python 2.7.1和django作为根,我认为这是合理的。 但我有问题知道。 我应该创build一个新的用户来部署应用程序,并在paache上或以root身份执行它也可以吗? 我应该创build一个用户来操纵MySQL吗? Django在我的本地运行Apache-modwsgi。 我应该configuration服务器上的Apache与mod-wsgi运行或有没有更好的方法呢? 我是这个服务器问题的新手,所以请原谅我,如果我的问题是如此普遍的答案。 任何易于阅读的文档(初学者级别)对我来说也可以。 如果你解释你的经验或做这种configuration的最佳做法,我也非常感激。

Apache2 mod_wsgi python 2.6 Django很慢

我已经尝试了大约1000倍的东西,但我似乎无法弄清楚为什么一个简单的Django网站使用apache 2.2.14 / wsgi latest / django 1.3很慢。 我已经证实了这个问题不是我们的数据库通过打开mysql慢查询日志logging。 我已经回顾了另一个100倍的wsgi守护进程configuration设置,但仍然不明白为什么runserver目前比apache更快! 这里是我的Apacheconfiguration,让我知道如果有其他项目将是有用的! WSGIDaemonProcess xxx display-name=xxx group=www-data user=www-data processes=25 threads=1 <VirtualHost *:80> ServerName www.xxx.com ServerAlias xxx.com ServerAlias localhost ServerAdmin [email protected] RewriteEngine Off RewriteCond %{HTTP_HOST} ^xxx\.com$ [NC] RewriteRule ^(.*)$ http://www.xxx.com$1 [R=301,L] RewriteCond %{REQUEST_URI} ^/login/$ RewriteRule /login https://%{HTTP_HOST}%{REQUEST_URI} [R,L] RewriteCond %{REQUEST_URI} ^/signup/ RewriteRule /signup https://%{HTTP_HOST}%{REQUEST_URI} [R,L] ErrorLog /var/log/apache2/xxx-error.log LogLevel […]

Django + Apache + mod_wsgi:为什么多次执行wsgi脚本?

我对所有服务器技术都比较陌生,我遵循本教程,使用mod_wsgi在Apache Web服务器上部署我的django应用程序: http://thecodeship.com/deployment/deploy-django-apache-virtualenv-and-mod_wsgi/ 这是我的虚拟主机文件: <VirtualHost *:80> ServerName www.abcxyz.org ServerAlias abcxyz.org WSGIScriptAlias / /var/www/abcxyz/django/abcxyz/wsgi_prod.py Alias /static/ /var/www/abcxyz/static/ <Location "/static/"> Options -Indexes </Location> </VirtualHost> 据我了解, wsgi_prod.py文件应该只在服务器启动时执行一次(或者当它得到第一个请求 – 我不确定这一点)。 但在我的应用程序中执行多次,发送请求到服务器。 它不是在所有请求上执行,而是在其中一些上执行。 还有一些请求,有时只触发wsgi_prod.py的执行。 这是我的wsgi_prod.py文件: import os import sys import site import thread # Add the site-packages of the chosen virtualenv to work with site.addsitedir('/etc/Envs/abcxyz/local/lib/python2.7/site-packages') # Add the app's directory […]

由于性能问题,我们正在从一台服务器迁移到两台服务器。 我们如何监控这一变化的价值?

由于性能问题,我们正在从一台服务器迁移到两台服务器。 我们正在将我们的MySQL数据库移动到它自己的专用服务器上,并将原始机器保持为运行nginx / apache(Django后端)的前端机器。 我们如何监控这一变化的价值? 有可能我们的整个网站实际上会变慢,因为MySQL查询将通过安全的远程连接而不是本地进行?

Nginx + Django + FastCGI WSGI错误? (非致命)

我正在用fastcgi在nginx上运行django。 当我做runfcgi时,我看到这些错误: python manage.py runfcgi daemonize=false host=127.0.0.1 port=8000 WSGIServer: missing FastCGI param SERVER_NAME required by WSGI! WSGIServer: missing FastCGI param SERVER_PORT required by WSGI! WSGIServer: missing FastCGI param SERVER_PROTOCOL required by WSGI! 在我的nginx错误日志中,我看到这个: 2011/01/31 10:33:16 [error] 15921#0: *4 FastCGI sent in stderr: "WSGIServer: missing FastCGI param SERVER_NAME required by WSGI! WSGIServer: missing FastCGI param SERVER_PORT […]

获得更多的数据库性能 – postgresql

有一个django“web应用程序”(从地狱),我们正在一个专用的服务器上托pipe。 在做了一些基准testing之后,我发现“应用程序”在数据库操作上是非常糟糕的(重构目前不是一种select)。 它会产生不合要求的读写活动。 现在我们正在获得另一个(第二个)专用服务器,以提高性能和一些紧急冗余。 这两台机器运行24核(英特尔(R)至强?CPU E5645 @ 2.40GHz)和48GB的RAM(也有Raid 10,6x150gb 15k硬盘)。 我想知道如何改善设置。 使用KVM进行虚拟化,为nginx + uwsgi,memcached和postgresql分别创buildvmachines。 最好使多于1个postgresql – 并使用pg-pool来获得更多。 保持虚拟化独立,在每个服务器上安装所有内容,然后使用此镜像设置在数据中心级别获得适当的负载平衡器。 获得更多的机器 – 更less的核心,更less的内存(一般比其他两个“主要”便宜),并设置一些数据库集群呢? 如果数据库集群路由 – 那么什么会给写入和读取的最佳性能? (在此期间我们正在重写应用程序的正确方法,但是获得当前的蹩脚的 – 运行速度更快是至关重要的,我们需要它至less在未来3个月内持续增长的stream量…) 你能提供一些关于加强安装的build议吗? 着重于为可笑的低效应用程序准备数据库机器结构。

这种尝试提供静态内容的错误是什么? 一个代理/ ReverseProxy王牌别名,或者我可以要求别名王牌代理?

我正在努力让Apache为Django项目提供静态文件。 我的VirtualHost有: Alias /static/ /home/jonathan/pragmatometer/static/ ProxyPass / http://localhost:8000/ ProxyPassReverse / http://localhost:8000/ 但是/static/css/style.css的请求是由Django进程提供的,而不是静态的/home/jonathan/pragmatometer/static/css/style.css。 我能做什么,以便别名胜过代理? 我可以尝试为/ load /,/ save /,/ admin /凑齐几个ProxyPass / ProxyPassReverse定义,但这样做是错误的。 那么正确的方法是什么?

HAProxy URL自省

我有一个应用程序,其中请求的URL根据内存caching或数据库查找确定将请求转发到哪个服务器。 目前,这只是循环法,但状态只存储在一台服务器上,该服务器需要获取具有一定字段的所有请求。 所以我想实现类似下面的表格: / Objects / ABC / – >在memcache中查找ABC ,返回servera.local – > Server A / Objects / DEF / – >在memcache中查找DEF ,返回serverb.local – > Server B 这是可能的HAProxy? 如果没有,我还能用什么? 如果Server A收到请求,但Server B负责请求,我真的不希望将Server A的请求复制到Server B 另一个可能适用于我的解决scheme是,如果应用程序可以返回告诉HAProxy哪个主机重新发送请求的东西。

使用Graphite进行LDAPauthentication

我已经在EC2的CentOS 6.2 x86_64上安装了Graphite Web 0.9.9,并试图使用LDAP身份validation来对抗389 Directory Server。 我已经configurationlocal_settings.py: USE_LDAP_AUTH LDAP_URI LDAP_SEARCH_BASE LDAP_BASE_USER LDAP_BASE_PASS LDAP_USER_QUERY 但每次尝试login时,我仍然会收到“validation尝试失败”。查看LDAP服务器上的日志,看起来并不像graphite-web正在连接到LDAP服务器。 不幸的是,我在石墨服务器上的日志中没有看到任何有用的东西 – 我只看到“access.log”和“info.log”。 “error.log”和“exception.log”是空的。 有什么好的想法可以做些什么来进一步解决这个问题?