标签: fastcgi

我是否必须将数据库连接/初始化置于FCGI循环之外以利用Perl中的FastCGI?

假设我有一些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速度的优势将资源留在循环中?

mysql perl fastcgi

6
推荐指数
1
解决办法
1071
查看次数

Flup中未处理的异常

我正面临着Flup提出的可怕的"未处理的异常".可悲的部分是它在webserver(lighttpd + flup)级别而不是在应用程序级别(Django).所以没有提出关于问题所在的500封电子邮件.

我们整个团队努力清理代码库,包括任何暧昧的进口和某种类型的东西,只是为了消除由于模糊的进口引起错误的机会.我们在代码中清理了很多东西.仍然是同样的例外.

坦率地说,我对Flup的错误处理感到非常沮丧.它没有告诉你任何事情.最糟糕的是,它向用户显示了相同的"未处理的例外".我如何通过这个?

我检查了lighttpd日志.我只看到"接口错误/连接已经关闭".它只发生在我的应用程序在FCGI模式下运行时.所以问题在于flup实际上是如何处理我的代码(应用程序)的.我如何通过这个?

我检查了flup的替代方案,但是Django明确地依赖于flup(这是一个限制,并让我困惑)(参考:django_src/django/core/servers/fastcgi.py line:100/131)

如何调试(至少)此方案并解决问题?请帮帮我.申请已经停止了3天.

django error-handling middleware fastcgi flup

6
推荐指数
3
解决办法
4017
查看次数

用于django应用程序的nginx + FastCGI ---运行两个web服务器还是一个?

我即将在nginx Web服务器上部署Django应用程序,并希望确保我正确构建系统.

似乎是常识,如果你在一个apache服务器上部署Django,那么你仍然应该在应用程序前放置一个nginx服务器来提供静态文件,在这些文件中nginx的性能更高.

如果不是apache代替Django代码,我想使用nginx + FastCGI来托管Django应用程序,是否有任何理由配置第二个nginx安装位于服务于动态内容的nginx服务器前面,以处理静态内容以及重定向到动态内容?

具体来说,是否会有静态和动态内容的不同配置参数,这些参数会让我想让服务器保持独立,或者我可以在单个nginx安装中将它们全部托管,其中一些URL映射到django内容,并且rest被映射到从同一个nginx安装服务的静态内容?

谢谢你的建议!

deployment django web-deployment-project fastcgi nginx

6
推荐指数
1
解决办法
2187
查看次数

获取FastCGI中的所有客户端头文件(C/C++)

目前我遇到了一个小问题:
我想为nekoVM创建FastCGI/CGI绑定.这是通过编写VM加载的一些线索C/C++代码来完成的.我想使我的绑定行为尽可能与neko native API(mod_neko,mod_tora)兼容.使用mod_neko,可以获取客户端发送的所有HTTP头.
据我所知,只有通过调用才能获得FastCGI的HTTP头getenv('header_name').要使用此功能,您需要知道所有标题的名称.

我的问题:是否有可能获得客户端发送的所有标头?

c c++ fastcgi http

6
推荐指数
1
解决办法
3260
查看次数

lighttpd + perl + mojolicious =?

mojolicious在lighttpd网络服务器下工作吗?怎么配置?我需要设置FastCGI吗?这是我第一次使用lighttpd.

perl fastcgi lighttpd mojo mojolicious

6
推荐指数
1
解决办法
1423
查看次数

为什么FastCGI快?

FastCGI提供了一种方法来提高为Web编写的数千个Perl应用程序的性能.- 来源

它是如何做到的?

perl fastcgi

6
推荐指数
2
解决办法
826
查看次数

php-fpm太多打开的文件

我正在运行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)

php fastcgi

6
推荐指数
1
解决办法
1万
查看次数

Magento的Nginx + PHP-FPM + FastCGI缓存配置

你们中的一些人可能已经注意到几天前由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)

php caching fastcgi nginx magento

6
推荐指数
1
解决办法
1万
查看次数

为什么我收到错误:在ajax请求期间从上游读取响应头时recv()失败(104:由对等方重置连接)

我有ajax的问题​​.它总是在请求后5分钟停止工作.我不知道是什么原因造成的.我查看了许多页面以找到溶剂,但也没有提供好的溶剂.我可以做什么 ?

php ajax fastcgi nginx server

6
推荐指数
1
解决办法
2万
查看次数

php-fpm不侦听端口

我一直在尝试让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状态的请求数不再增加。它的行为没有韵律或节奏,即使对于少数几个请求,我也找不到一致的方法来使它工作。
这个问题困扰了我两天了,它与日志中的任何内容都不一致。请帮忙。感谢您的提前答复。



我到目前为止尝试过的-

  1. 使用nginx进行了测试,以确保其不是cgi-fcgi问题。Nginx中的相同问题也无法连接到上游。
  2. 设置php-fpm日志级别以进行调试以查看是否弹出了某些消息。没有发现与众不同。
  3. 启用访问日志以查看请求至少是否达到php-fpm。访问日志中没有失败请求的条目。
  4. 侦听值更改为9000和0.0.0.0:9000和external_ip:9000。所有这些更改并没有改变行为。
  5. 更改为其他端口以确保其端口号未被使用。
  6. 增加和减少pm.start_servers以及其他相关值以检查其进程是否耗尽。没有影响,实际上所有进程一直都处于空闲状态。
  7. 删除并重新安装php-fpm
  8. 重置配置以确保其不是配置问题
  9. 从remi repo而不是webstatic repo安装php-fpm以确保它不是一个不好的构建
  10. 降级到php 7.0
  11. 停止所有其他服务以确保没有冲突等
  12. 将listen.allowed_clients更改为“ any”以确保其不是客户端被拒绝
  13. 裸服务器,并重新安装操作系统本身,以确保连续2天尝试多种操作后,它不是操作系统问题。(没有数据的空服务器)
  14. 使用unix套接字而不是端口确实可以正常工作。但是套接字不能满足要求,就好像它需要从mysql获取超过100行的数据一样,我注意到套接字模式下超时(> 30s)。



下面的信息和配置

作业系统-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)

php fastcgi centos nginx fpm

6
推荐指数
1
解决办法
9381
查看次数