我们有两个 Coldfusion 服务器,它们在完全相同的输入数据上运行完全相同的代码,它们具有巨大的性能差异。有问题的代码实例化了大量 CFC(Coldfusion Components,类似于 OOP 语言中的对象)。
我通过运行 Process Monitor 比较了两台服务器,然后在两台机器上调用有问题的代码。我学到了两件事。首先,Coldfusion 每次实例化一个对象时都会打开 CFC 文件。两台服务器都这样做,因此它不会成为性能差异的原因。其次,快速服务器直接打开 CFC 文件,而有性能问题的服务器似乎在路径中导航,直到到达所需的 CFC 文件。它对每个文件执行此操作,甚至是它之前加载的文件,并且由于代码实例化了如此多的 CFC,因此它变得非常慢。请参阅下面显示此行为的部分 Promon 跟踪。慢速服务器可能需要 60 多秒才能完成快速服务器在 2 秒内完成的操作。
谁能告诉我是什么导致了这种行为?它是 Coldfusion 设置吗?由于 Coldfusion 在 Java 之上运行,它是 Java 设置吗?它是操作系统选项吗?快速服务器运行的是 Windows XP,我认为慢速服务器是 Windows Server 2003。
额外问题:Coldfusion 似乎不会对任何 CFC 或 CFM 文件执行任何 READ FILE 操作。怎么会这样?
快速服务器打开 CFC 文件的示例:
11:25:14.5588975 jrun.exe QueryOpen C:\CF\wwwroot\APP\com\HtmlUtils.cfc
11:25:14.5592758 jrun.exe CreateFile C:\CF\wwwroot\APP\com\HtmlUtils.cfc
11:25:14.5595024 jrun.exe QueryBasicInformationFile C:\CF\wwwroot\APP\com\HtmlUtils.cfc
11:25:14.5595940 jrun.exe CloseFile C:\CF\wwwroot\APP\com\HtmlUtils.cfc
11:25:14.5599628 jrun.exe CreateFile C:\CF\wwwroot\APP\com\HtmlUtils.cfc
11:25:14.5601600 jrun.exe QueryBasicInformationFile C:\CF\wwwroot\APP\com\HtmlUtils.cfc
11:25:14.5602463 jrun.exe CloseFile C:\CF\wwwroot\APP\com\HtmlUtils.cfc
Run Code Online (Sandbox Code Playgroud)
慢速服务器打开 …
我正在设置 Apache Solr 4.1,它将用于为 Web 应用程序索引数据。只有 Web 应用程序才能访问 Solr。用户和其他客户端不会直接与 Solr 对话。
保护此类 Solr 设置的最佳实践有哪些?
(我们使用 Jetty 来运行 Solr)
是否可以设置 lighttpd 服务器和 curl 客户端,以便客户端和服务器都验证彼此的自签名 SSL 证书,但下载文件时没有 SSL 加密?
我该如何设置?
在开发过程中,每当我在 PHP 中因拼写错误或只是我的错误编程而创建致命错误时,我都会在浏览器中看到空白页面;)。对我来说,必须查看原始 nginx 错误日志文件来查看致命错误并找到它们所在的行号是非常烦人的。我似乎找不到如何让 nginx 在浏览器中显示 PHP 致命错误。这是我的 nginx 配置的相关部分:
location @fpm {
fastcgi_pass unix:/var/run/php5-fpm.sock;
fastcgi_index index.php;
include fastcgi_params;
fastcgi_param SCRIPT_NAME index.php;
fastcgi_param SCRIPT_FILENAME $document_root/index.php;
fastcgi_param PATH_INFO $path_info;
}
Run Code Online (Sandbox Code Playgroud)
这是一个错误示例,它显示在我的错误日志中,然后导致浏览器页面空白:
2014/01/04 14:53:52 [error] 20082#0: *403 FastCGI sent in stderr:
"PHP message: PHP Fatal error: Cannot redeclare class ClassName in FilePath on line 356"
while reading response header from upstream, client: 192.168.1.10,
server: servername, request: "GET URLPATH HTTP/1.1",
upstream: "fastcgi://unix:/var/run/php5-fpm.sock:", host: "host",
referrer: "referer"
Run Code Online (Sandbox Code Playgroud)
这是我的 PHP 信息:

这是我的 PHP-FPM 配置: …
我的 nginx 服务器有以下配置:
server {
listen 80 default_server;
server_name example.com www.example.com;
root /var/www/example.com/web;
index index.php index.html;
location / {
# try to serve file directly, fallback to rewrite
try_files $uri $uri/ @rewriteapp;
}
location @rewriteapp {
# rewrite all to index.php
rewrite ^(.*)$ /index.php last;
}
location ~ \.php$ {
fastcgi_pass unix:/var/run/php5-fpm.sock;
fastcgi_split_path_info ^(.+\.php)(/.*)$;
include fastcgi_params;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
fastcgi_param HTTPS off;
fastcgi_buffer_size 128k;
fastcgi_buffers 4 256k;
fastcgi_busy_buffers_size 256k;
}
}
Run Code Online (Sandbox Code Playgroud)
以及以下目录结构:
/var/www/example.com/:
当客户端点击:' example.com/dir/ ' 然后 …
我网站的服务器目前仅使用 IPv4。我知道 IPv6 将来会很重要,但是:
我的网站日志文件显示许多请求寻找:
/phpmyadmin/scripts/setup.php
Run Code Online (Sandbox Code Playgroud)
我的网站上有 phpmyadmin。我应该删除该setup.php文件还是让他们继续请求它?
简而言之:如何在多个 php-fpm 池中包含相同的设置而不为每个池重复它们?
在 php5-fpm 中有全局指令和每个池指令。在所有示例和文档中,每个池都有所有必需的设置,例如
[www]
user = $pool
group = $pool
listen = 127.0.0.1:9001
listen.owner = $pool
listen.group = $pool
pm = ondemand
pm.max_children = 5
pm.process_idle_timeout = 30s
chdir = /var/www/$pool
[www2]
user = $pool
group = $pool
listen = 127.0.0.1:9002
listen.owner = $pool
listen.group = $pool
pm = ondemand
pm.max_children = 5
pm.process_idle_timeout = 30s
chdir = /var/www/$pool
Run Code Online (Sandbox Code Playgroud)
如您所见,大多数配置都是相同的,所以我想知道是否有办法将该配置放在所有池都可以隐式或显式包含它们的地方。
将它们放在该[Global]部分的底部是行不通的。
谢谢你的任何建议。
我想构建一个 HA Web 服务,我计划在三个节点(带有副本 3)上使用 Glusterfs。
我的计划是直接在 Gluster 节点上安装 Web 服务器。
这是一个可行的解决方案还是有充分的理由使用专用的 Gluster 节点?
谢谢你。
P。
对于.well-known路径,我想返回一个静态 JSON 文件/字符串。
使用 nginx,这似乎是可能的,而无需通过在配置文件中指定内容来创建该文件:
location /.well-known/foo {
return 200 '{"foo": "bar"}';
default_type application/json;
add_header Access-Control-Allow-Origin *;
}
Run Code Online (Sandbox Code Playgroud)
apache 有类似的可能吗?这是我到目前为止:
<Location "/.well-known/foo">
# return '{"foo": "bar"}'
ForceType application/json
Header set Access-Control-Allow-Origin *
</Location>
Run Code Online (Sandbox Code Playgroud) web-server ×10
nginx ×2
php ×2
php-fpm ×2
apache-2.4 ×1
apache2 ×1
coldfusion ×1
curl ×1
glusterfs ×1
ipv6 ×1
jetty ×1
lighttpd ×1
log-files ×1
mod-rewrite ×1
php5 ×1
search ×1
solr ×1
ssl ×1
web ×1
website ×1