假设我有一些Perl代码,每当它被命中时,它会增加数据库特定行中的列,并且我希望它经常被命中,所以我想用FCGI对它进行优化.现在,我基本上把大部分代码包装成这样的东西:
while (FCGI::accept() >= 0) {
[code which currently creates a db connection and makes calls through it]
}
Run Code Online (Sandbox Code Playgroud)
我想知道是否最好将数据库连接(我的$ dbh = DBI-> connect(etc))放在FCGI循环之外,以便脚本保持连接活动,或者我仍然可以获得FCGI速度的优势将资源留在循环中?
我正面临着Flup提出的可怕的"未处理的异常".可悲的部分是它在webserver(lighttpd + flup)级别而不是在应用程序级别(Django).所以没有提出关于问题所在的500封电子邮件.
我们整个团队努力清理代码库,包括任何暧昧的进口和某种类型的东西,只是为了消除由于模糊的进口引起错误的机会.我们在代码中清理了很多东西.仍然是同样的例外.
坦率地说,我对Flup的错误处理感到非常沮丧.它没有告诉你任何事情.最糟糕的是,它向用户显示了相同的"未处理的例外".我如何通过这个?
我检查了lighttpd日志.我只看到"接口错误/连接已经关闭".它只发生在我的应用程序在FCGI模式下运行时.所以问题在于flup实际上是如何处理我的代码(应用程序)的.我如何通过这个?
我检查了flup的替代方案,但是Django明确地依赖于flup(这是一个限制,并让我困惑)(参考:django_src/django/core/servers/fastcgi.py line:100/131)
如何调试(至少)此方案并解决问题?请帮帮我.申请已经停止了3天.
我即将在nginx Web服务器上部署Django应用程序,并希望确保我正确构建系统.
似乎是常识,如果你在一个apache服务器上部署Django,那么你仍然应该在应用程序前放置一个nginx服务器来提供静态文件,在这些文件中nginx的性能更高.
如果不是apache代替Django代码,我想使用nginx + FastCGI来托管Django应用程序,是否有任何理由配置第二个nginx安装位于服务于动态内容的nginx服务器前面,以处理静态内容以及重定向到动态内容?
具体来说,是否会有静态和动态内容的不同配置参数,这些参数会让我想让服务器保持独立,或者我可以在单个nginx安装中将它们全部托管,其中一些URL映射到django内容,并且rest被映射到从同一个nginx安装服务的静态内容?
谢谢你的建议!
目前我遇到了一个小问题:
我想为nekoVM创建FastCGI/CGI绑定.这是通过编写VM加载的一些线索C/C++代码来完成的.我想使我的绑定行为尽可能与neko native API(mod_neko,mod_tora)兼容.使用mod_neko,可以获取客户端发送的所有HTTP头.
据我所知,只有通过调用才能获得FastCGI的HTTP头getenv('header_name').要使用此功能,您需要知道所有标题的名称.
我的问题:是否有可能获得客户端发送的所有标头?
mojolicious在lighttpd网络服务器下工作吗?怎么配置?我需要设置FastCGI吗?这是我第一次使用lighttpd.
我正在运行nginx作为前端和php-fpm作为prcesss php文件的后端.我的/var/log/php-fpm/error.log上出现"打开文件太多"的错误.我将硬和软ulimit增加到65535,似乎无法解决问题.
/var/log/php-fpm/error.log
[17-Sep-2012 14:43:51] ERROR: failed to prepare the stderr pipe: Too many open files (24)
[17-Sep-2012 14:43:52] ERROR: failed to prepare the stderr pipe: Too many open files (24)
Run Code Online (Sandbox Code Playgroud)
ulimit -n
65535
Run Code Online (Sandbox Code Playgroud)
/etc/php-fpm/www.conf
rlimit_files = 65535
Run Code Online (Sandbox Code Playgroud) 你们中的一些人可能已经注意到几天前由Magento发布的最近的Optimizing Magento For Peak Performance白皮书.虽然它主要是为EE用户编写的,但我相信我们也可以使用社区版的大部分技巧.
读完后,我继续将他们建议的Nginx + fastcgi /代理缓存配置与Magento的标准虚拟主机配置合并,并进行了一些小的改进.这是我想出的:
fastcgi_cache_path /tmp/fcgi levels=1:2 keys_zone=MAGE:64m max_size=128m inactive=10h;
server {
listen 99999; ## Nginx port
server_name domain.com www.domain.com;
root /www/magento; ## App folder
index index.php;
location ~* \.(js|css|png|jpg|jpeg|gif|ico)$ {
expires max;
access_log off;
log_not_found off;
}
location /index {
try_files $uri @fcgi_nocache;
}
location /checkout {
try_files $uri @fcgi_nocache;
}
location / {
try_files $uri @fcgi_cache;
if ($cookie_frontend) { return 413; }
if ($cookie_CUSTOMER_AUTH) { return 413; }
if ($request_method = …Run Code Online (Sandbox Code Playgroud) 我有ajax的问题.它总是在请求后5分钟停止工作.我不知道是什么原因造成的.我查看了许多页面以找到溶剂,但也没有提供好的溶剂.我可以做什么 ?
我一直在尝试让php-fpm(w nginx)与默认端口(9000)一起使用,但它不起作用。我正在尝试使用php 7.1(也尝试过7.0和5.6)。服务启动正常,我也可以在ss / netstat中看到端口已打开并正在监听。php-fpm日志中没有错误。最初,我认为这可能是nginx的问题,但是当我尝试使用cgi-fcgi -bind -connect 127.0.0.1:9000直接测试连接时,它只是没有响应,最终出现了无法连接的错误。该请求不会记录在访问日志中(启用访问日志时)。
# cgi-fcgi -bind -connect 127.0.0.1:9000
Could not connect to 127.0.0.1:9000
Run Code Online (Sandbox Code Playgroud)
在重新启动后的某些时候,它只是随机地处理几个请求(有时1个请求,有时10个,变化),然后又停止工作。处于php-fpm状态的请求数不再增加。它的行为没有韵律或节奏,即使对于少数几个请求,我也找不到一致的方法来使它工作。
这个问题困扰了我两天了,它与日志中的任何内容都不一致。请帮忙。感谢您的提前答复。
我到目前为止尝试过的-
下面的信息和配置
作业系统-CentOS 7
PHP-FPM服务状态
#service php-fpm status
Redirecting to /bin/systemctl status php-fpm.service
* php-fpm.service - The PHP FastCGI Process Manager
Loaded: loaded (/usr/lib/systemd/system/php-fpm.service; disabled; vendor preset: disabled)
Active: active (running) since Sun 2017-04-16 …Run Code Online (Sandbox Code Playgroud)