使用 Yum/CentOS。
问题是 php 5.1 已经安装并运行,所以
百胜更新php
不工作!
我环顾网络寻找解决方案,但他们说要执行上述操作=/
我需要在脚本中获取 DNS 的最新 A 记录。该脚本正在执行一些监视操作。DNS 记录的默认 TTL 为 5 分钟,但监控脚本每分钟运行一次。我正在使用 PHP 的函数 dns_get_record 来获取 A 记录,但我想知道是否有一种方法可以忽略 TTL 缓存并从 DNS 服务器中获取记录而不是缓存。
当然,有什么方法可以强制执行此操作,以便不适用网络级缓存,并且每次运行脚本时,它实际上都会命中 DNS 服务器?
感谢斯帕什·古普塔
我最近切换到 PHP(Apache2-worker 和mod_fcgid)的 FastCGI 设置。但是,当单个 PHP 脚本非常繁忙时,它似乎会阻止所有其他 PHP 请求。我的配置会有什么问题?
我使用的主要原因mod_fcgid是为了控制 PHP 内存使用。使用mod_php,所有单独的 Apache 分支在为 PHP 提供服务后都会在内存中增长。
我还切换到 apache2-worker 模型,因为所有线程不安全的 PHP 代码都存在于 Apache 之外。
我的 FastCGI 脚本如下所示:
#!/bin/sh
#export PHPRC=/etc/php/fastcgi/
export PHP_FCGI_CHILDREN=5
export PHP_FCGI_MAX_REQUESTS=5000
global_root=/srv/www/vhosts.d/
exec /usr/bin/php-cgi5 \
-d open_basedir=$global_root:/tmp:/usr/share/php5:/var/lib/php5 \
-d disable_functions="exec,shell_exec,system"
Run Code Online (Sandbox Code Playgroud)
我的 Apache 配置如下所示:
<IfModule fcgid_module>
FcgidIPCDir /var/lib/apache2/fcgid/
FcgidProcessTableFile /var/lib/apache2/fcgid/shm
FcgidMaxProcessesPerClass 1
FcgidInitialEnv RAILS_ENV production
FcgidIOTimeout 600
AddHandler fcgid-script .fcgi
FcgidConnectTimeout 20
MaxRequestLen 16777216
<FilesMatch "\.php$">
AddHandler fcgid-script .php
Options +ExecCGI
FcgidWrapper /srv/www/cgi-bin/php5-wrapper.sh …Run Code Online (Sandbox Code Playgroud) PHP 有几个会话设置来控制垃圾收集(即删除过期会话)发生的可能性。
我的问题是:这个概率是否适用于任何给定 Apache 服务器上所有虚拟主机上的所有运行 Apache 线程?
例如:
我正在尝试衡量是否需要调整给定 VirtualHost、整个服务器或其他内容的 gc_probability 设置。
我在专用服务器上运行带有 MPM prefork 的 Apache 2.2.21。更多细节:
Server Version: Apache/2.2.21 (Unix) mod_ssl/2.2.21 OpenSSL/1.0.0-fips DAV/2 SVN/1.7.0 mod_python/3.3.1 Python/2.6.5 mod_bwlimited/1.4 PHP/5.3.6
Run Code Online (Sandbox Code Playgroud)
流量通常在 10-30 个请求/秒之间,有 12GB 的 RAM,我们相当保守地调整了 MaxClients (250)。由于各种原因,我们确实看到了使用高峰(在较旧的服务器上,在这些高峰期间,我们的 MaxClients 数次达到 100)。
无论如何,这是一个新服务器。运行一段时间后,我们的 Apache 状态开始看起来像这样:
GGG_._._RC_.G..C.G_G.C_G..C_.CG_._._G__W____..R.WCR_.W..G_......
Run Code Online (Sandbox Code Playgroud)
G(“优雅地完成”)被卡住了。如果我重新启动 Apache,它们只会消失。这肯定会导致我们在没有定期监控/修复的情况下达到我们的 MaxClients 限制。我在互联网上四处阅读,Apache 中似乎有一个与此类似的错误,但发生在不同的条件下。它显然也在 2.2.14 版中得到了修复。
我包含了一个挂起进程的堆栈跟踪供您检查。
#0 0x000000350c6f119e in __lll_lock_wait_private () from /lib64/libc.so.6
#1 0x000000350c67c138 in _L_lock_9164 () from /lib64/libc.so.6
#2 0x000000350c679a32 in malloc () from /lib64/libc.so.6
#3 0x000000350c66fcfb in __libc_message () from /lib64/libc.so.6
#4 0x000000350c675676 in malloc_printerr () from /lib64/libc.so.6
#5 0x000000350c675aa1 in malloc_consolidate …Run Code Online (Sandbox Code Playgroud) 我在 Windows Server 2008r2 上使用 IIS7。我最近安装了 php 和 IIS。我试图浏览到 index.php 但它返回一个空白页。它加载我的页面的图标和页眉。当我加载 info.php 文件时,它不是空白的。
如果我禁用匿名身份验证它相同的 index.php 返回IIS 7.5 详细错误 - 401.2 - 未经授权。
奇怪的是,我将这个确切的代码安装到我刚刚安装的另一个新的 IIS 上,并且加载正常。两者的目录权限相同。
我不确定如何使用 OpenSSL重新编译PHP?我一直在寻找的OpenSSL的PHP页面和OpenSSL的教程左右,但我没有看到任何openssl.so或php-openssl.so在我的服务器?
apt-get频道上是否有一个简单的包,以便我可以从那里安装它?
我只需要使用 OpenSSL 重新编译 PHP,但我不知道如何执行此操作。
编辑:我运行一个专用服务器,它是 Ubuntu 11.10。
我想进一步优化 APC,但我不确定在哪里可以做些什么。首先是使用当前配置运行一周后的屏幕截图:

我现在有以下几点我不确定:
我最感兴趣的是回答这些问题。只有这样我才能更好地理解APC并自己做出调整。
一些详细信息:在此服务器上运行 Drupal 和 Magento。Drupal 也将其用作用户缓存。
我现在的问题是如何优化它。我可以分配更多的内存,但我不确定这是否真的有很大帮助。
更新:这是配置:
; The size of each shared memory segment in MB.
apc.shm_size = 192M
; Prevent files larger than this value from getting cached. Defaults to 1M.
apc.max_file_size = 2M
; The number of seconds a cache entry is allowed to idle in a slot in case
; this cache entry slot is needed by another entry.
apc.ttl = …Run Code Online (Sandbox Code Playgroud) 我看到一些间歇性 CPU 使用率飙升至 100%,这与这些日志条目有关:
[27-Feb-2012 13:29:29] PHP Fatal error: PHP Startup: apc_mmap: mmap failed: in Unknown on line 0
[27-Feb-2012 13:29:30] PHP Fatal error: PHP Startup: apc_mmap: mmap failed: in Unknown on line 0
[27-Feb-2012 13:29:31] PHP Fatal error: PHP Startup: apc_mmap: mmap failed: in Unknown on line 0
[27-Feb-2012 13:29:31] PHP Fatal error: PHP Startup: apc_mmap: mmap failed: in Unknown on line 0
Run Code Online (Sandbox Code Playgroud)
phpinfo() 表示 APC 已设置,据我所知,此错误不会在实时站点上导致可见的 500 个错误,这是一个 WordPress 安装,每月观看次数约为 60 万次。到目前为止,谷歌一直没有帮助,我希望这里有人对导致这种情况的原因以及如何解决它有一些见解。奇怪的是,这个错误只显示在 /usr/local/apache2/logs/error_log 而不是 cpanel 配置站点的 error_log。
让我先说这是本主题的后续问题。
通过将 memcached 服务器从 Solaris (SmartOS) 切换到 Ubuntu 来“解决”这个问题。现在我们已经将负载增加了大约 5 倍,并且再次遇到问题。
我们正在运行一个大约每分钟处理 1000 个请求的站点,每个请求以大约 3 次读取和 1 次写入命中 Memcached。所以负载大约是每秒 65 个请求。缓存中的数据总量约为 37M,每个键包含的数据量非常小(JSON 编码的整数数组,小于 1K)。
我们在这些页面上设置了一个基准测试脚本,并将数据输入 StatsD 进行记录。问题在于,Memcached 需要很长时间才能响应的峰值。这些似乎与流量高峰无关。

什么可能导致这些尖峰?为什么 memcached 会占用一秒钟的时间来回复?我们刚刚启动了第二台服务器以放入池中,它在峰值的频率或严重性方面没有任何明显的差异。
这是服务器上 getStats() 的输出:
Array
(
[-----------] => Array
(
[pid] => 1364
[uptime] => 3715684
[threads] => 4
[time] => 1336596719
[pointer_size] => 64
[rusage_user_seconds] => 7924
[rusage_user_microseconds] => 170000
[rusage_system_seconds] => 187214
[rusage_system_microseconds] => 190000
[curr_items] => 12578
[total_items] => 53516300
[limit_maxbytes] => 943718400
[curr_connections] => …Run Code Online (Sandbox Code Playgroud) php ×10
apache-2.2 ×4
memcache ×2
cache ×1
centos ×1
fastcgi ×1
iis-7.5 ×1
linux ×1
memcached ×1
mod-fcgid ×1
mpm-prefork ×1
mysql ×1
openssl ×1
optimization ×1
php5 ×1
reverse-dns ×1
scalability ×1
ubuntu ×1
windows ×1
yum ×1