系统调用- php进程LD_LIBRARY_PATH大的cpu占用


system calls - php process LD_LIBRARY_PATH big cpu usage

我正在寻找PHP进程使用如此多CPU的原因,服务器是Apache mpm worker + suphp下面是'strace php'的一些输出,正如你所看到的,这个过程正在寻找'不正确'路径中的dso,这些只是编译的php扩展,是否有一种方法可以指定搜索路径为'/lib64:/usr/lib64' ?因为我发现它最终在lib64或/usr/lib64中加载了dso,这是系统CPU消耗,你知道,这么多系统调用都是徒劳的。提前谢谢。

open("/opt/xslt/lib/libselinux.so.1", O_RDONLY) = -1 ENOENT (No such file or directory)
open("/opt/tidy/lib/libselinux.so.1", O_RDONLY) = -1 ENOENT (No such file or directory)
open("/opt/mhash/lib/libselinux.so.1", O_RDONLY) = -1 ENOENT (No such file or directory)
open("/opt/libmcrypt/lib/libselinux.so.1", O_RDONLY) = -1 ENOENT (No such file or directory)
open("/opt/pcre/lib/libselinux.so.1", O_RDONLY) = -1 ENOENT (No such file or directory)
open("/opt/curlssl/lib/libselinux.so.1", O_RDONLY) = -1 ENOENT (No such file or directory)
open("/usr/lib64/mysql/libselinux.so.1", O_RDONLY) = -1 ENOENT (No such file or directory)
open("/opt/xml2/lib/libselinux.so.1", O_RDONLY) = -1 ENOENT (No such file or directory)
open("/opt/pcre/lib64/libselinux.so.1", O_RDONLY) = -1 ENOENT (No such file or directory)
open("/opt/curlssl//lib64/libselinux.so.1", O_RDONLY) = -1 ENOENT (No such file or directory)
open("/opt/php_with_imap_client//lib64/libselinux.so.1", O_RDONLY) = -1 ENOENT (No such file or directory)
open("/opt/libmcrypt//lib64/libselinux.so.1", O_RDONLY) = -1 ENOENT (No such file or directory)
open("/opt/mhash//lib64/libselinux.so.1", O_RDONLY) = -1 ENOENT (No such file or directory)
open("/opt/tidy//lib64/libselinux.so.1", O_RDONLY) = -1 ENOENT (No such file or directory)
open("/opt/xslt//lib64/libselinux.so.1", O_RDONLY) = -1 ENOENT (No such file or directory)
open("/usr/lib64/tls/libselinux.so.1", O_RDONLY) = -1 ENOENT (No such file or directory)
open("/usr/lib64/libselinux.so.1", O_RDONLY) = -1 ENOENT (No such file or directory)
open("/lib64/libselinux.so.1", O_RDONLY) = 3
open("/opt/xslt/lib/libsepol.so.1", O_RDONLY) = -1 ENOENT (No such file or directory)
open("/opt/tidy/lib/libsepol.so.1", O_RDONLY) = -1 ENOENT (No such file or directory)
open("/opt/mhash/lib/libsepol.so.1", O_RDONLY) = -1 ENOENT (No such file or directory)
open("/opt/libmcrypt/lib/libsepol.so.1", O_RDONLY) = -1 ENOENT (No such file or directory)
open("/opt/pcre/lib/libsepol.so.1", O_RDONLY) = -1 ENOENT (No such file or directory)
open("/opt/curlssl/lib/libsepol.so.1", O_RDONLY) = -1 ENOENT (No such file or directory)
open("/usr/lib64/mysql/libsepol.so.1", O_RDONLY) = -1 ENOENT (No such file or directory)
open("/opt/xml2/lib/libsepol.so.1", O_RDONLY) = -1 ENOENT (No such file or directory)
open("/opt/pcre/lib64/libsepol.so.1", O_RDONLY) = -1 ENOENT (No such file or directory)
open("/opt/curlssl//lib64/libsepol.so.1", O_RDONLY) = -1 ENOENT (No such file or directory)
open("/opt/php_with_imap_client//lib64/libsepol.so.1", O_RDONLY) = -1 ENOENT (No such file or directory)
open("/opt/libmcrypt//lib64/libsepol.so.1", O_RDONLY) = -1 ENOENT (No such file or directory)
open("/opt/mhash//lib64/libsepol.so.1", O_RDONLY) = -1 ENOENT (No such file or directory)
open("/opt/tidy//lib64/libsepol.so.1", O_RDONLY) = -1 ENOENT (No such file or directory)
open("/opt/xslt//lib64/libsepol.so.1", O_RDONLY) = -1 ENOENT (No such file or directory)
open("/usr/lib64/tls/libsepol.so.1", O_RDONLY) = -1 ENOENT (No such file or directory)
open("/usr/lib64/libsepol.so.1", O_RDONLY) = -1 ENOENT (No such file or directory)
open("/lib64/libsepol.so.1", O_RDONLY)  = 3
open("/opt/xslt/lib/libnss_files.so.2", O_RDONLY) = -1 ENOENT (No such file or directory)
open("/opt/tidy/lib/libnss_files.so.2", O_RDONLY) = -1 ENOENT (No such file or directory)
open("/opt/mhash/lib/libnss_files.so.2", O_RDONLY) = -1 ENOENT (No such file or directory)
open("/opt/libmcrypt/lib/libnss_files.so.2", O_RDONLY) = -1 ENOENT (No such file or directory)
open("/opt/pcre/lib/libnss_files.so.2", O_RDONLY) = -1 ENOENT (No such file or directory)
open("/opt/curlssl/lib/libnss_files.so.2", O_RDONLY) = -1 ENOENT (No such file or directory)
open("/usr/lib64/mysql/libnss_files.so.2", O_RDONLY) = -1 ENOENT (No such file or directory)
open("/opt/xml2/lib/libnss_files.so.2", O_RDONLY) = -1 ENOENT (No such file or directory)
open("/opt/pcre/lib64/libnss_files.so.2", O_RDONLY) = -1 ENOENT (No such file or directory)
open("/opt/curlssl//lib64/libnss_files.so.2", O_RDONLY) = -1 ENOENT (No such file or directory)
open("/opt/php_with_imap_client//lib64/libnss_files.so.2", O_RDONLY) = -1 ENOENT (No such file or directory)
open("/opt/libmcrypt//lib64/libnss_files.so.2", O_RDONLY) = -1 ENOENT (No such file or directory)
open("/opt/mhash//lib64/libnss_files.so.2", O_RDONLY) = -1 ENOENT (No such file or directory)
open("/opt/tidy//lib64/libnss_files.so.2", O_RDONLY) = -1 ENOENT (No such file or directory)
open("/opt/xslt//lib64/libnss_files.so.2", O_RDONLY) = -1 ENOENT (No such file or directory)
open("/usr/lib64/tls/libnss_files.so.2", O_RDONLY) = -1 ENOENT (No such file or directory)
open("/usr/lib64/libnss_files.so.2", O_RDONLY) = -1 ENOENT (No such file or directory)
open("/lib64/libnss_files.so.2", O_RDONLY) = 3

我的观点正确吗?还是下面的代码导致了大量的CPU占用?

lstat("/home", {st_mode=S_IFDIR|0711, st_size=4096, ...}) = 0
lstat("/home/socialth", {st_mode=S_IFDIR|0711, st_size=4096, ...}) = 0
lstat("/home/socialth/public_html", {st_mode=S_IFDIR|0750, st_size=4096, ...}) = 0
lstat("/home/socialth/public_html/components", {st_mode=S_IFDIR|0755, st_size=4096, ...}) = 0
lstat("/home/socialth/public_html/components/com_content", {st_mode=S_IFDIR|0755, st_size=4096, ...}) = 0
lstat("/home/socialth/public_html/components/com_content/router.php", {st_mode=S_IFREG|0644, st_size=8157, ...}) = 0
stat("/home/socialth/public_html/components/com_content/router.php", {st_mode=S_IFREG|0644, st_size=8157, ...}) = 0
stat("/home/socialth/public_html/index.php", {st_mode=S_IFREG|0644, st_size=1971, ...}) = 0
access("/home/socialth/public_html/components/com_content/router.php", F_OK) = 0
lstat("/home", {st_mode=S_IFDIR|0711, st_size=4096, ...}) = 0
lstat("/home/socialth", {st_mode=S_IFDIR|0711, st_size=4096, ...}) = 0
lstat("/home/socialth/public_html", {st_mode=S_IFDIR|0750, st_size=4096, ...}) = 0
lstat("/home/socialth/public_html/components", {st_mode=S_IFDIR|0755, st_size=4096, ...}) = 0
lstat("/home/socialth/public_html/components/com_content", {st_mode=S_IFDIR|0755, st_size=4096, ...}) = 0
lstat("/home/socialth/public_html/components/com_content/router.php", {st_mode=S_IFREG|0644, st_size=8157, ...}) = 0
lstat("/home", {st_mode=S_IFDIR|0711, st_size=4096, ...}) = 0
lstat("/home/socialth", {st_mode=S_IFDIR|0711, st_size=4096, ...}) = 0
lstat("/home/socialth/public_html", {st_mode=S_IFDIR|0750, st_size=4096, ...}) = 0
lstat("/home/socialth/public_html/components", {st_mode=S_IFDIR|0755, st_size=4096, ...}) = 0
lstat("/home/socialth/public_html/components/com_content", {st_mode=S_IFDIR|0755, st_size=4096, ...}) = 0
lstat("/home/socialth/public_html/components/com_content/router.php", {st_mode=S_IFREG|0644, st_size=8157, ...}) = 0
stat("/home/socialth/public_html/components/com_content/router.php", {st_mode=S_IFREG|0644, st_size=8157, ...}) = 0
stat("/home/socialth/public_html/index.php", {st_mode=S_IFREG|0644, st_size=1971, ...}) = 0
access("/home/socialth/public_html/components/com_content/router.php", F_OK) = 0
lstat("/home", {st_mode=S_IFDIR|0711, st_size=4096, ...}) = 0
lstat("/home/socialth", {st_mode=S_IFDIR|0711, st_size=4096, ...}) = 0
lstat("/home/socialth/public_html", {st_mode=S_IFDIR|0750, st_size=4096, ...}) = 0
lstat("/home/socialth/public_html/components", {st_mode=S_IFDIR|0755, st_size=4096, ...}) = 0
lstat("/home/socialth/public_html/components/com_content", {st_mode=S_IFDIR|0755, st_size=4096, ...}) = 0
lstat("/home/socialth/public_html/components/com_content/router.php", {st_mode=S_IFREG|0644, st_size=8157, ...}) = 0
lstat("/home", {st_mode=S_IFDIR|0711, st_size=4096, ...}) = 0
lstat("/home/socialth", {st_mode=S_IFDIR|0711, st_size=4096, ...}) = 0
lstat("/home/socialth/public_html", {st_mode=S_IFDIR|0750, st_size=4096, ...}) = 0
lstat("/home/socialth/public_html/components", {st_mode=S_IFDIR|0755, st_size=4096, ...}) = 0
lstat("/home/socialth/public_html/components/com_content", {st_mode=S_IFDIR|0755, st_size=4096, ...}) = 0
lstat("/home/socialth/public_html/components/com_content/router.php", {st_mode=S_IFREG|0644, st_size=8157, ...}) = 0
stat("/home/socialth/public_html/components/com_content/router.php", {st_mode=S_IFREG|0644, st_size=8157, ...}) = 0
stat("/home/socialth/public_html/index.php", {st_mode=S_IFREG|0644, st_size=1971, ...}) = 0
access("/home/socialth/public_html/components/com_content/router.php", F_OK) = 0
lstat("/home", {st_mode=S_IFDIR|0711, st_size=4096, ...}) = 0
lstat("/home/socialth", {st_mode=S_IFDIR|0711, st_size=4096, ...}) = 0
lstat("/home/socialth/public_html", {st_mode=S_IFDIR|0750, st_size=4096, ...}) = 0
lstat("/home/socialth/public_html/components", {st_mode=S_IFDIR|0755, st_size=4096, ...}) = 0
lstat("/home/socialth/public_html/components/com_content", {st_mode=S_IFDIR|0755, st_size=4096, ...}) = 0
lstat("/home/socialth/public_html/components/com_content/router.php", {st_mode=S_IFREG|0644, st_size=8157, ...}) = 0
lstat("/home", {st_mode=S_IFDIR|0711, st_size=4096, ...}) = 0
lstat("/home/socialth", {st_mode=S_IFDIR|0711, st_size=4096, ...}) = 0
lstat("/home/socialth/public_html", {st_mode=S_IFDIR|0750, st_size=4096, ...}) = 0
lstat("/home/socialth/public_html/components", {st_mode=S_IFDIR|0755, st_size=4096, ...}) = 0
lstat("/home/socialth/public_html/components/com_content", {st_mode=S_IFDIR|0755, st_size=4096, ...}) = 0
lstat("/home/socialth/public_html/components/com_content/router.php", {st_mode=S_IFREG|0644, st_size=8157, ...}) = 0
stat("/home/socialth/public_html/components/com_content/router.php", {st_mode=S_IFREG|0644, st_size=8157, ...}) = 0
stat("/home/socialth/public_html/index.php", {st_mode=S_IFREG|0644, st_size=1971, ...}) = 0
access("/home/socialth/public_html/components/com_content/router.php", F_OK) = 0
lstat("/home", {st_mode=S_IFDIR|0711, st_size=4096, ...}) = 0
lstat("/home/socialth", {st_mode=S_IFDIR|0711, st_size=4096, ...}) = 0
lstat("/home/socialth/public_html", {st_mode=S_IFDIR|0750, st_size=4096, ...}) = 0
lstat("/home/socialth/public_html/components", {st_mode=S_IFDIR|0755, st_size=4096, ...}) = 0
lstat("/home/socialth/public_html/components/com_content", {st_mode=S_IFDIR|0755, st_size=4096, ...}) = 0
lstat("/home/socialth/public_html/components/com_content/router.php", {st_mode=S_IFREG|0644, st_size=8157, ...}) = 0
lstat("/home", {st_mode=S_IFDIR|0711, st_size=4096, ...}) = 0
lstat("/home/socialth", {st_mode=S_IFDIR|0711, st_size=4096, ...}) = 0
lstat("/home/socialth/public_html", {st_mode=S_IFDIR|0750, st_size=4096, ...}) = 0
lstat("/home/socialth/public_html/components", {st_mode=S_IFDIR|0755, st_size=4096, ...}) = 0
lstat("/home/socialth/public_html/components/com_content", {st_mode=S_IFDIR|0755, st_size=4096, ...}) = 0
lstat("/home/socialth/public_html/components/com_content/router.php", {st_mode=S_IFREG|0644, st_size=8157, ...}) = 0
stat("/home/socialth/public_html/components/com_content/router.php", {st_mode=S_IFREG|0644, st_size=8157, ...}) = 0    
stat("/home/socialth/public_html/index.php", {st_mode=S_IFREG|0644, st_size=1971, ...}) = 0
access("/home/socialth/public_html/components/com_content/router.php", F_OK) = 0
lstat("/home", {st_mode=S_IFDIR|0711, st_size=4096, ...}) = 0
lstat("/home/socialth", {st_mode=S_IFDIR|0711, st_size=4096, ...}) = 0
lstat("/home/socialth/public_html", {st_mode=S_IFDIR|0750, st_size=4096, ...}) = 0
lstat("/home/socialth/public_html/components", {st_mode=S_IFDIR|0755, st_size=4096, ...}) = 0
lstat("/home/socialth/public_html/components/com_content", {st_mode=S_IFDIR|0755, st_size=4096, ...}) = 0
lstat("/home/socialth/public_html/components/com_content/router.php", {st_mode=S_IFREG|0644, st_size=8157, ...}) = 0
lstat("/home", {st_mode=S_IFDIR|0711, st_size=4096, ...}) = 0
lstat("/home/socialth", {st_mode=S_IFDIR|0711, st_size=4096, ...}) = 0
lstat("/home/socialth/public_html", {st_mode=S_IFDIR|0750, st_size=4096, ...}) = 0
lstat("/home/socialth/public_html/components", {st_mode=S_IFDIR|0755, st_size=4096, ...}) = 0
lstat("/home/socialth/public_html/components/com_content", {st_mode=S_IFDIR|0755, st_size=4096, ...}) = 0
lstat("/home/socialth/public_html/components/com_content/router.php", {st_mode=S_IFREG|0644, st_size=8157, ...}) = 0
stat("/home/socialth/public_html/components/com_content/router.php", {st_mode=S_IFREG|0644, st_size=8157, ...}) = 0
stat("/home/socialth/public_html/index.php", {st_mode=S_IFREG|0644, st_size=1971, ...}) = 0
access("/home/socialth/public_html/components/com_content/router.php", F_OK) = 0
lstat("/home", {st_mode=S_IFDIR|0711, st_size=4096, ...}) = 0
lstat("/home/socialth", {st_mode=S_IFDIR|0711, st_size=4096, ...}) = 0
lstat("/home/socialth/public_html", {st_mode=S_IFDIR|0750, st_size=4096, ...}) = 0
lstat("/home/socialth/public_html/components", {st_mode=S_IFDIR|0755, st_size=4096, ...}) = 0
lstat("/home/socialth/public_html/components/com_content", {st_mode=S_IFDIR|0755, st_size=4096, ...}) = 0
lstat("/home/socialth/public_html/components/com_content/router.php", {st_mode=S_IFREG|0644, st_size=8157, ...}) = 0

您对此无能为力,特别是因为所有这些包都已将自己安装在自己的小目录树中。虽然/opt是一个很好的概念,可以将整个包彼此隔离开来,但它确实意味着任何为系统的其余部分提供共享库的这样的包必须放在库搜索路径中,并且当搜索任何共享库时,您最终会遇到长时间无意义的open/stat调用。你唯一能做的优化也许就是重新安排路径,让不经常使用的库位于搜索路径的尾部,这样点击就会"更快"出现,而不会浪费时间检查很少使用的区域。

PHP自动加载器也是如此。通向任何特定文件的长状态链也是必要的,因为系统在每个阶段检查访问权限。

顺便说一下,这就是为什么不鼓励使用。htaccess文件的确切原因。一旦启用了。htaccess, Apache就必须检查每个指向请求文件的目录是否存在。htaccess文件。如果文件存在,它必须被加载/解析等…所有这些都浪费了大量的cpu周期和磁盘带宽。

。htaccess在开发/测试时是可以的,但是一旦你有了一个可以工作的设置,.htaccess指令应该被转移到主服务器的.conf文件中,这样它们只在服务器启动时加载/解析一次。