워드프레스 로그인이 느려지는 경우 해결하기 (sendmail 에서 hostname 오류인 경우)

며칠전부터 원인을 알 수 없는 워드프레스 로그인이 느려지는 경우가 있어서 원인을 찾아보았습니다. 보통 1초내로 로그인이 되던것이 거의 1분이상 걸리더군요. 딱히 워드프레스나 웹서버, PHP 설정을 건든적이 없는데 참 이상한 일입니다.

하지만 잘 돌던게 문제가 생긴다면 당연히 뭔가 변경한 것 때문에 이상이 생긴게 분명합니다.

일단 애꿎은 서버의 설정파일들을 계속 봐보다가 답이 안나와서 다시 이번에는 mysql 에서 로그인시 process list 를 확인을 해보았습니다.

MariaDB [(none)]> show processlist;

로그인중 계속 확인해봤지만 별다른 특이점은 없었습니다. 딱히 top 에서 mysql 디비 서버에 부하가 걸리는 것도 아니었고요.

이번엔 서버의 프로세스 목록을 살펴봤습니다. 물론 로그인이 오래 걸리는 그 때 말이죠..

$ ps aufx
...
root     13736  0.0  0.2 474124 18552 ?        Ss   Apr28   0:17 php-fpm: master process (/etc/php/7.3/fpm/php-fpm.conf)
www-data 32532  0.9  1.3 580544 107296 ?       S    09:44   0:12  \_ php-fpm: pool www
www-data 32546  1.1  1.1 576400 92532 ?        S    09:45   0:14  \_ php-fpm: pool www
www-data 32613  0.9  1.4 593268 121768 ?       S    09:47   0:10  \_ php-fpm: pool www
www-data   603  0.0  0.0   4628   836 ?        S    10:05   0:00      \_ sh -c /usr/sbin/sendmail -t -i 
www-data   604  0.0  0.1 105436  8452 ?        S    10:05   0:00          \_ /usr/sbin/sendmail -t -i

프로세스 목록을 보니 이상한 낌새를 찾을 수 있었습니다. 이상하게 저 sendmail 프로세스가 계속 떠있더군요. 혹시나해서 계속해서 ps 를 때려서 목록을 실시간으로 확인해봤는데.. 저 sendmail 프로세스가 사라지자 바로 로그인이 완료되더군요.

이때부터 웹서버나 PHP가 아닌 sendmail 쪽이 문제가 있다는 것을 알게되었습니다.

바로 /var/log/mail.log 와 mail.err 파일을 확인해 보았습니다. (리눅스 배포본 혹은 사용하는 sendmail 서비스 종류에 따라 이 경로는 달라질 수 있습니다. 여기서는 우분투 18.04 64bit sendmail 기준입니다.)

root@doogle:/var/log# tail mail.log
...
May  1 09:45:28 doogle sm-mta[645]: 04117BMp000643: to=<www-data@doogle>, delay=00:00:00, xdelay=00:00:00, mailer=esmtp, pri=123738, relay=doogle [172.18.0.1], dsn=4.0.0, stat=Deferred: Connection refused by doogle

root@doogle:/var/log# tail mail.err
May  1 09:40:01 doogle sm-msp-queue[32432]: My unqualified host name (doogle) unknown; sleeping for retry
May  1 09:41:01 doogle sm-msp-queue[32432]: unable to qualify my own domain name (doogle) -- using short name
May  1 09:44:28 doogle sendmail[32530]: My unqualified host name (doogle) unknown; sleeping for retry
May  1 09:45:28 doogle sendmail[32530]: unable to qualify my own domain name (doogle) -- using short name

결국 원인을 찾았습니다.

/etc/hostname 을 바꾼게 원인이었더군요. 이걸 바꾼이유는 쉘에서 뜨는 값이 어차피 doogle만 나오니 hostname 을 doogle.link 에서 doogle 로 바꿔버렸던 것이 문제였습니다.

제대로 domain name 형식으로 doogle.link 로 바꿔줍니다. ㅜㅜ

# vi /etc/hostname
doogle.link

:wq 로 저장하고 나옵니다.

# 현재 서버에 반영하기 위해 아래와 같이 명령어를 호출합니다.
# hostname -F /etc/hostname

# 이제 hostname 을 쳐보면 바뀌었는지 확인할 수 있습니다.
# hostname
doogle.link

우분투에서는 아래와 같이 간단하게 변경할 수도 있습니다.

# hostnamectl set-hostname doogle.link

이렇게 별것 아닌듯한 설정도 엄청난 문제를 야기할 수도 있습니다. 오늘 또 명심하게 되네요. ^^