我有php 5.5(fpm)和nginx 1.10安装(gzipconfiguration为1)。 在Ubuntu上运行。 当我“回响”一个大的输出(超过2 MB)时,它会在520 kb左右突然停止。 但是,当我运行在php-cli上的同样的程序,没有任何问题“回声”到terminal上的整个事情。 同时通过adminer下载mysql dump也会在中途停下来。 我的意思是不完整的文件被下载(如果在几个MB中正确的总输出更大)。 如何解决这个问题? 我的程序没有错。 即使是一个简单的足够长的循环喷出回声“你好世界”停止在特定的字节限制。 我不确定这个问题是由nginx侧还是php侧引起的。
我正在尝试加载我的团队使用jmeter在AWS ubuntu 14.04上开发和部署的LAMP应用程序。 我们使用AWS CDN来提供静态文件,mysql和apache在同一个主机上。 当只有一个用户在做东西时,响应时间是正常的,根据页面在2到5秒之间。 我的目标是在同一时间使500个连接的用户同时做出回应。 我从less数用户开始,在一个t2.small(1vCPU,2Gb RAM)上使用mod_php和prefork模块,并且只有40个连接用户满意。 一旦有100个,它的响应时间+ 20s就会非常慢。 在尝试了一些SO资源之后,我尝试了使用php-fpm和event module。 performance较好但仍然缓慢; + 15s的任何单个页面。 我决定将服务器升级到M4.2xlarge(8vCPU,32 Gb RAM)。 对于100个连接的用户来说,它performance正常,我很满意,但这是一个昂贵的,我想用最适合的服务器规格来find更好的性能。 无论如何,我试图testing这个M4.2xlarge与330连接用户做东西一致,它变得太慢,每页+ 15~ + 20s。 一直试图调整事件configuration和fpm过程没有运气(在大多数情况下,我有+90℅cpu,但没有足够的内存不被使用,这就是为什么我在那里我们有一个限制)。 我觉得我很亲密,但我做不到。 我会更新我的问题与任何文件,日志或ouptut你会问。
我想将umask设置为002来执行php-fpm过程。 我正在读这里 , 在这里 ,在Ubuntu / Debian上它应该通过修改init脚本来完成。 然而,我怀疑这是正确的方法。 只是考虑大小写php5-fpm得到更新,更新修改了init脚本。 我也在这里读到,对于CentOS / Redhat,你可以通过/etc/sysconfig/来设置它。 所以我的问题是Debian / Ubuntu上是否有正确的方法来设置umask而不修改init脚本? 如果没有,可以直接修改init脚本吗?
我了解ssl握手stream程,但是我面临一个逻辑问题。 当用户select证书时,我需要根据应用程序对其进行validation,以了解其可靠性并与任何系统用户匹配。 但是,如果没有,我必须允许用户再次要求select另一个。 也许用户在他们的机器上安装了多个证书,并错误地select了错误的证书。 在我的实际情况下,要select另一个证书,用户必须closures浏览器并再次打开,但它会给用户带来负面的体验,我想改进它。 该解决scheme为每个请求都进行握手,因此它允许用户select另一个请求。 但是怎么做呢? 我发现的最相关的问题是https://security.stackexchange.com/questions/56623/avoiding-ssl-handshake-for-each-call 。 完整的握手是客户端和服务器彼此不认识时所做的(他们以前没有谈过,或者很久以前)。 在完整握手中,证书被发送,并且发生非对称密码(RSA,Diffie-Hellman …)。 缩略握手是客户端和服务器互相记住的内容; 更准确地说,他们记得在先前的完整握手中build立的algorithm和密钥,并同意重用它们(从技术上讲,它们重用“主密钥”并从中获得新的encryption密钥)。 我可以释放任何cookie,closures选项卡,并禁用保持活动,第二次握手不会打开证书提示。 它使用的是之前select的,而对于Chrome而言,Firefox没有“记住我的决定”的选项。 边缘,歌剧,边缘等相同的发生是否是一个标准? 我想,它可以由服务器端来控制,请求一个新的SSL握手。 我做了一些干预,试图自己解决,但没有成功 在客户端 : 清除所有的数据,甚至历史。 在另一个子域中打开Cookie 在服务器端 : 发送“连接:closures”标题 禁用保持活动 closures浏览器是唯一有效的新的SSL握手,但它会促进不良的用户体验。 那么,如果我正在清理浏览器中的所有数据,closures连接,删除所有活动的数据,并且仍然使用第二个请求中select的第一个证书,直到closures浏览器(终止所有进程),出现错误,或者与浏览器(全部)或与服务器。 如果我的应用程序使用SSL对用户进行身份validation,则不能在不closures浏览器的情况下使用多个login名,这是不对的,应该有重新协商此身份validation的方法。
我在Apache 2.4.25上有一个虚拟主机,通过mod_proxy_fcgi连接PHP-FPM 7.1.4,如下所示: <VirtualHost *:80> ServerName example.com DocumentRoot /srv/www/example.com <Directory /srv/www/example.com> AllowOverride All Require all granted </Directory> SetEnvIfNoCase ^Authorization$ "(.+)" HTTP_AUTHORIZATION=$1 <FilesMatch ".+\.ph(p[3457]?|t|tml)$"> SetHandler "proxy:unix:/run/php/example.sock|fcgi://localhost" </FilesMatch> </VirtualHost> 大多数应用程序在这个设置上都能正常工作,但是有一个应用程序使用PATH_INFO来提取请求。 该应用程序在它的.htaccess中有这样的东西: RewriteEngine On RewriteCond $1 ^index\.php RewriteRule ^(.*)$ – [PT,L] RewriteRule ^(.*)$ index.php/$1 [PT,L] 简而言之,所有不是index.php东西都应该作为一个path传递给它。 访问URL http://example.com/index.php/test工程并按预期显示[PATH_INFO] => /test ,但访问http://example.com/test与 AH01071: Got error 'Primary script unknown\n' 为mod_rewrite和mod_proxy_fcgi设置LogLevel […]
我已经安装了ngix + php5-fpm。 我很高兴,但我不能优化php5-fpm,使其工作没有错误。 每个固定的错误都会产生不同的错误 首先我得到了导致很多错误的默认设置: [04-Jun-2012 03:30:06] WARNING: [pool www] server reached pm.max_children setting (5), consider raising it 我增加了所有数字: pm.max_children = 15 pm.start_servers = 5 pm.min_spare_servers = 3 pm.max_spare_servers = 5 ;pm.max_requests = 500 它造成了一个不同的错误: [28-Feb-2013 07:45:06] WARNING: [pool www] seems busy (you may need to increase pm.start_servers, or pm.min/max_spare_servers), spawning 8 children, there […]
我已阅读规范的答案在我的网站文件/文件夹应该在Linuxnetworking服务器上有什么权限? 不过,我仍然坚持。 我的设置是: 拥有构成网站的目录和文件的开发者用户“ade” 服务器是nginx与php-fpm通过套接字: fastcgi_pass unix:/tmp/php5-fpm.sock; 网站包含一个上传目录,在此configuration下运行时,必须由PHP写入 显然,我不想将权限设置为777 我创build了一个webadmin组,并添加了'ade'和nginx: $ groups ade ade : ade webadmin $ groups nginx nginx : nginx webadmin 我已经把站点中的所有者设置为我和webadmin组: chown ade:webadmin * …如你看到的: drwxrwxr-x 2 ade webadmin 4096 Jul 3 13:58 logs drwxrwxr-x 5 ade webadmin 4096 Jul 4 08:35 public drwxrwxr-x 4 ade webadmin 4096 Jul 3 16:18 […]
这里是我的php-fpmconfiguration是: location @site { fastcgi_pass unix:/var/run/php5-fpm.sock; include fastcgi_params; fastcgi_param SCRIPT_FILENAME $document_root/index.php; fastcgi_intercept_errors on; error_page 404 /404; } 由于启用了fastcgi_intercept_errors ,当我的PHP路由器返回404时,Nginx将redirect到/404 。 很好 。 但是由于/404是由我的PHP应用程序生成的,而且我的PHP应用程序正确设置了404响应代码,那么Nginx将尝试再次处理该错误! (这明显以循环结束) 有针对这个的解决方法吗?
我们正在研究如何让APC只为每个帐户/站点创build一个caching。 这可以通过Fastcgi完成(最新更新为2006年…),但Fastcgid APC将不得不为同一个帐户运行的多个进程创build多个caching。 为了解决这个问题,我们一直在研究PHP-FPM PHP进程pipe理器允许多个PHP进程共享一个APCcaching。 但是从我读过的东西(我希望我错了),即使您为每个进程创build一个池,跨所有池的所有站点将共享相同的APCcaching。 这使我们回到与共享Memcached相同的问题:这是不安全的! 在php-fpm的网站上,我读到,你可以chroot php-fpm池,并定义一个特定的UID和每个池的GID …如果是这样的话,APC不得不使用这个用户,并没有访问其他池caching? 这里的一篇文章(在2011年)提出,你需要在每个池上运行一个进程,在不同的端口上创build多个启动器,并且每个configuration文件为一个池创build不同的configuration文件: http://groups.drupal.org/node/198168 这是否仍然是必需的? 如果是这样的话,那么运行php-fpm的800个进程会有什么影响呢? 会主要是记忆吗? 如果是的话,我怎样才能算出记忆的影响呢? 我想,运行800次php-fpm会更好,然后让帐户为单个站点创build多个APCcaching? 如果平均一个帐户创build一个50MBcaching,并创build3个caching每个帐户,使150Mb每个帐户,使120GB … 但是,如果每个帐户使用平均只有50Mb,将使40GB 我们的下一台服务器至less有128GB内存,如果运行800x PHP-FPM不会产生20GB以上的开销,那么40GB是可以接受的! 你认为什么是PHP-FPM最好的方式去提供安全的APCcaching共享主机与具有相当数量的内存的服务器? 或者我应该看看另一个系统? 谢谢 !
我正在尝试在PHP-FPM chroot中设置一个站点。 我的path如下: chroot = /var/www/ chdir = www/ chroot工作得很好,没有chdir。 但是,当我添加chdir我得到这个错误在PHP的启动: ERROR: [pool www] the chdir path '/usr/www/' within the chroot path '/var/www/' ('/var/www///usr/www/') does not exist or is not a directory 有人知道为什么它会追加/usr/ chdirpath? 有没有办法把它从这个path中删除? 另外,如果我将chdirpath更改为/www/ ,则必须浏览到http://localhost/www/filename.php以查看我的文件。 chdir的重点并不是没有必要吗?