CentOS 7.4.1708에서 PHP 7.1.13을 시작하는 데 지연이 있습니다. 어떻게 고치나요?

CentOS 7.4.1708에서 PHP 7.1.13을 시작하는 데 지연이 있습니다. 어떻게 고치나요?

CentOS 7.4.1708의 PHP 7.1.13

빈 스크립트를 사용하거나 버전 정보를 얻기 위해 php를 호출하면 설명할 수 없는 지연(2~10초)이 발생합니다. 이전에는 어떤 시스템에서도 이런 일이 발생하는 것을 본 적이 없으며 디버깅하거나 수정하는 방법도 모릅니다.

지연 범위는 2~10초입니다. 다른 시스템과 마찬가지로 몇 밀리초밖에 걸리지 않습니다. 다른 프로그램에서는 이러한 지연이 발생하지 않습니다.

시스템 로드는 무시할 수 있습니다.

08:32:00 up 8 days,  2:23,  1 user,  load average: 0.26, 0.29, 0.35

누구든지 이것에 대해 조언을 제공할 수 있습니까?

기준:

$ time php -v
PHP 7.1.13 (cli) (built: Jan  4 2018 15:22:08) ( NTS )
Copyright (c) 1997-2017 The PHP Group
Zend Engine v3.1.0, Copyright (c) 1998-2017 Zend Technologies
    with Zend OPcache v7.1.13, Copyright (c) 1999-2017, by Zend Technologies

real    0m1.916s
user    0m0.015s
sys 0m0.012s
$ time php -r ''

real    0m9.841s
user    0m0.015s
sys 0m0.009s

저는 이 컴퓨터의 관리자는 아니지만 문제를 해결하기 위해 관리자와 협력하고 있습니다.

이 특정 패키지가 어떻게 설치되었는지는 말할 수 없습니다.


[편집하다]

strace를 실행하라는 제안을 받았는데 POLL에서 일시 중지되는 것을 발견했습니다. PHP 폴링은 무엇을 합니까?

poll([{fd=3, events=POLLOUT}], 1, 0) = 1 ([{fd=3, revents=POLLOUT}])

sys adm에서 10.226.139.110에 무엇이 있는지(또는 있어야 하는지) 알아내려고 합니다. 핑이 잘 울리고 특별한 지연도 없습니다.

socket(AF_INET, SOCK_DGRAM|SOCK_NONBLOCK, IPPROTO_IP) = 3
connect(3, {sa_family=AF_INET, sin_port=htons(53), sin_addr=inet_addr("10.226.139.110")}, 16) = 0
poll([{fd=3, events=POLLOUT}], 1, 0)    = 1 ([{fd=3, revents=POLLOUT}])
sendmmsg(3, {{{msg_name(0)=NULL, msg_iov(1)=[{"!\24\1\0\0\1\0\0\0\0\0\0\xxx\yyy"..., 50}], msg_controllen=0, msg_flags=MSG_DONTWAIT|MSG_EOR|MSG_CONFIRM|MSG_RST|MSG_ERRQUEUE|MSG_MORE|MSG_FASTOPEN|0x6620010}, 50}, {{msg_name(0)=NULL, msg_iov(1)=[{"!\367\1\0\0\1\0\0\0\0\0\0\xxx\yyy"..., 50}], msg_controllen=0, msg_flags=MSG_CONFIRM}, 50}}, 2, MSG_NOSIGNAL) = 2
poll([{fd=3, events=POLLIN}], 1, 5000)  = 0 (Timeout)
socket(AF_INET, SOCK_DGRAM|SOCK_NONBLOCK, IPPROTO_IP) = 4
connect(4, {sa_family=AF_INET, sin_port=htons(53), sin_addr=inet_addr("10.226.143.110")}, 16) = 0
poll([{fd=4, events=POLLOUT}], 1, 0)    = 1 ([{fd=4, revents=POLLOUT}])
sendmmsg(4, {{{msg_name(0)=NULL, msg_iov(1)=[{"!\24\1\0\0\1\0\0\0\0\0\0\xxx\yyy"..., 50}], msg_controllen=0, msg_flags=MSG_DONTWAIT|MSG_EOR|MSG_CONFIRM|MSG_RST|MSG_ERRQUEUE|MSG_MORE|MSG_FASTOPEN|0x6620010}, 50}, {{msg_name(0)=NULL, msg_iov(1)=[{"!\367\1\0\0\1\0\0\0\0\0\0\xxx\yyy"..., 50}], msg_controllen=0, msg_flags=MSG_CONFIRM}, 50}}, 2, MSG_NOSIGNAL) = 2
poll([{fd=4, events=POLLIN}], 1, 5000)  = 1 ([{fd=4, revents=POLLIN}])
ioctl(4, FIONREAD, [148])               = 0
recvfrom(4, "!\24\201\200\0\1\0\0\0\1\0\0\vcoloscrmweb\16indepen"..., 2048, 0, {sa_family=AF_INET, sin_port=htons(53), sin_addr=inet_addr("10.226.143.110")}, [16]) = 148
poll([{fd=4, events=POLLIN}], 1, 2769)  = 1 ([{fd=4, revents=POLLIN}])
ioctl(4, FIONREAD, [148])               = 0
recvfrom(4, "!\367\201\200\0\1\0\0\0\1\0\0\xxx\yyy"..., 65536, 0, {sa_family=AF_INET, sin_port=htons(53), sin_addr=inet_addr("10.226.143.110")}, [16]) = 148
close(3)                                = 0
close(4)                                = 0
socket(AF_INET, SOCK_DGRAM|SOCK_NONBLOCK, IPPROTO_IP) = 3
connect(3, {sa_family=AF_INET, sin_port=htons(53), sin_addr=inet_addr("10.226.139.110")}, 16) = 0
poll([{fd=3, events=POLLOUT}], 1, 0)    = 1 ([{fd=3, revents=POLLOUT}])

--

PHP-m

[PHP Modules]
apcu
bcmath
bz2
calendar
Core
ctype
curl
date
dom
exif
fileinfo
filter
ftp
gd
gettext
hash
iconv
igbinary
imap
json
libxml
mbstring
mcrypt
memcached
mysqli
mysqlnd
openssl
pcntl
pcre
PDO
pdo_mysql
pdo_sqlite
Phar
posix
readline
Reflection
session
shmop
SimpleXML
sockets
SPL
sqlite3
sqlsrv
standard
sysvmsg
sysvsem
sysvshm
tokenizer
wddx
xml
xmlreader
xmlwriter
xsl
Zend OPcache
zip
zlib

[Zend Modules]
Zend OPcache

답변1

문제는 /etc/hostname의 값이 /etc/hosts의 로컬 IP 주소에 매핑되지 않는다는 것입니다. 및 IMAP 모듈(imap.so)는 초기화 시 호스트 이름을 확인하려고 시도하며(이해할 수 없는 이유로) DNS에 쿼리합니다. 이 특정 호스트의 호스트 이름은 회사의 DNS에 등록되어 있지 않습니다.

해결책: /etc/hosts 편집

127.0.0.1  [whatever the /etc/hostname is] 

(또는 다른 로컬 IP 주소)

도움을 주셔서 감사합니다 @ramansailopal

https://serverfault.com/questions/586141/php-cli-with-imap-5-second-startup-delay

관련 정보