wordpress 속도 향상하기

내가 작년에 일하던 중 apache2 에서 nginx 로 워드프레스를 이전했다.

그때 설치한 직후에는 몰랐는데 요즘 다시 블로그를 쓰다보니, 너무 느리더라….

특히 처음 세션 연결에 10초가량 소비되고, 그 다음 세션부터는 괜찮아졌다.

근데 또 얼마 있다가 다시 확인해보면 또 10초 이상 걸리더라

열심히 구글링을 하다보니, nginx가 아닌 php-fpm이 문제라는걸 알게 되었다.

php-fpm 설정파일 중
/etc/php/7.3/fpm/pool.d/www.conf
을 보면

pm = ondemand
pm.max_children = 5
pm.start_servers = 2
pm.min_spare_servers = 4
pm.max_spare_servers = 8

요런 내용들이 있는데, pm이 뭐로 되어있냐에 따라 child를 관리하는 방법이 바뀌는데, ondemand나 dynamic으로 하면 child 수가 가변적으로 변화하는데, 심지어 다 없어지기도 한다. 요청이 들어오면 child가 생성되고 동작이 수행되다보니 속도가 느려지는 것이다.

내 서버는 워드프레스만 돌고 있고, 사용자도 많지 않아서 그냥 static으로 고정을 해보렸다. ㅋㅋㅋ 그러고 나서 ps 를 해보면

위처럼 php-fpm: pool www 는 사라지지 않고 계속 떠있고

첫 속도가 빨라진다.

근데 종종 nginx access.log 에 요청 자체가 늦게 들어오는 경우가 있는데, 이부분은 어떻게 해결해야할지 고민중이다.

이거저거 수정하다보니 훨씬 빨라졌다.

#nginx 설정에 다음 추가
fastcgi_cache_path /etc/nginx-cache levels=1:2 keys_zone=phpcache:100m inactive=60m;
fastcgi_cache_key "$scheme$request_method$host$request_uri";

#nginx 사이트 설정에
#아래처럼 http2 추가
listen 443 ssl http2;
#아래 내용 추가
ssl_session_cache shared:SSL:1m; # holds approx 4000 sessions

#사이트 설정 fastcgi 설정에
location ~ .php$ {
                fastcgi_cache phpcache; # The name of the cache key-zone to use
                fastcgi_cache_valid 200 30m; # What to cache: 'Code 200' responses, for half an hour
                fastcgi_cache_methods GET HEAD; # What to cache: only GET and HEAD requests (not POST)
                add_header X-Fastcgi-Cache $upstream_cache_status; # Add header so we can see if the cache hits or misses
                try_files $uri =404;
                fastcgi_pass 127.0.0.1:9000;
                fastcgi_index index.php;
                fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
                include fastcgi_params;
        }

이렇게 하고나니, 기존 사이트 로딩이 4초 정도는 걸렸는데, 다 1초 이하로 떨어졌다.

ㅋㅋㅋㅋㅋ

답글 남기기

이메일 주소는 공개되지 않습니다.

이 사이트는 스팸을 줄이는 아키스밋을 사용합니다. 댓글이 어떻게 처리되는지 알아보십시오.