리소스가 충분해도 서버는 여전히 느립니다.

리소스가 충분해도 서버는 여전히 느립니다.

저는 Debian 10 VPS에서 WordPress Multisite를 사용하여 약 450개의 간단한 웹사이트를 운영하고 있습니다. 다음은 리소스에 대한 일부 데이터입니다.

root@hr711523385:~# free -mh
              total        used        free      shared  buff/cache   available
Mem:           57Gi       9,2Gi       1,2Gi       246Mi        47Gi        47Gi
Swap:          16Gi       9,9Gi       7,0Gi

root@hr711523385:~# lscpu
Architecture:        x86_64
CPU op-mode(s):      32-bit, 64-bit
Byte Order:          Little Endian
Address sizes:       40 bits physical, 48 bits virtual
CPU(s):              16
On-line CPU(s) list: 0-15
Thread(s) per core:  1
Core(s) per socket:  1
Socket(s):           16
NUMA node(s):        1
Vendor ID:           GenuineIntel
CPU family:          6
Model:               61
Model name:          Intel Core Processor (Broadwell, IBRS)
Stepping:            2
CPU MHz:             3000.000
BogoMIPS:            6000.00
Virtualization:      VT-x
Hypervisor vendor:   KVM
Virtualization type: full
L1d cache:           32K
L1i cache:           32K
L2 cache:            4096K
L3 cache:            16384K
NUMA node0 CPU(s):   0-15
Flags:               fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush mmx fxsr sse sse2 syscall nx rdtscp lm constant_tsc rep_good nopl xtopology cpuid tsc_known_freq pni pclmulqdq vmx ssse3 fma cx16 pcid sse4_1 sse4_2 x2apic movbe popcnt tsc_deadline_timer aes xsave avx f16c rdrand hypervisor lahf_lm abm 3dnowprefetch cpuid_fault invpcid_single pti ibrs ibpb tpr_shadow vnmi flexpriority ept vpid ept_ad fsgsbase bmi1 hle avx2 smep bmi2 erms invpcid rtm rdseed adx smap xsaveopt arat
root@hr711523385:~# 

VPS를 관리하기 위해 Plesk 18.0.48을 사용하고 있습니다. 몇 주 동안 내 모든 웹 사이트가 극도로 느려지고 때로는 504 nginx 오류가 발생합니다. SSH 터미널을 열면 명령 입력, 파일 편집, 원격 파일 다운로드 등 모든 것이 느려집니다(238.00 KiB/s!!).

이것이 htop이 제공하는 것입니다: 여기에 이미지 설명을 입력하세요. 리소스 문제가 보이나요? RAM과 CPU가 좋아 보입니다! 서버는 wordpress 네트워크를 실행하는 데에만 사용되므로 WP가 문제인 것 같지만 시작하는 방법을 찾을 수 없습니다. php-fm입니까? 아파치? mysqld? …문제의 원인은 누구입니까?

고쳐 쓰다

외부 시스템 관리자에게 더 자세히 알아보도록 요청했고 그는 Telegraf를 사용하여 나에게 다음을 보냈습니다. CPU 사용량 네트워크 사용량 메모리 사용량 디스크 I/O 사용량 - 상단: 읽기, 하단: 쓰기 그는 문제가 디스크 I/O(80 쓰기/초)라고 말했지만 여전히 그 이유를 모릅니다! 디스크 I/O가 너무 많아지는 원인을 어떻게 찾을 수 있나요? mysqld인 것 같은데 잘 모르겠습니다. (각 사이트마다 약 10개의 UPDATE 쿼리가 생성되며 조사가 진행 중입니다.)

답변1

“WordPress Multisite를 사용한 450개의 간단한 웹사이트”: 이 문제는 PHP-FPM 프로세스로 인해 시스템에 과부하가 발생했기 때문에 발생한 것으로 확신합니다. 근본 원인은 일반적으로 악성 봇이 특정 도메인을 공격하기 때문입니다.

  1. 도메인의 웹 서버 로그를 확인하여 어떤 도메인이 많은 요청을 받고 있는지 알아보세요.
  2. (루트로) 실행하여 ps aux | grep php-fpm어떤 PHP-FPM 프로세스가 존재하는지, 어떤 사용자가 프로세스를 소유하고 있는지 확인하고, 어떤 도메인과 관련되어 있거나 실행하는지(또한 루트로) 출력에서 ​​직접 가져옵니다. 프로세스의 프로세스 ID는 strace -p <pid>어디에 있고 관찰합니다. <pid>수행할 작업(출력에서 도메인에 대한 참조를 찾을 수 있음)입니다.
  3. 루트로 실행 watch "ps aux | sort -nrk 3,3 | head -n 20"하고 로드된 프로세스 20개를 관찰하여 어떤 프로세스가 가장 많은 CPU를 소비하는지 알아보세요.

504 결과는 응답하지 않는 PHP 프로세스로 인해 발생하는 것이 거의 확실합니다. 장기 실행 스크립트가 끝없는 루프에 갇혀 있거나 PHP-FPM의 max_children이 너무 낮게 설정되어 새 하위 프로세스를 생성할 수 없어 Nginx가 웹 사이트에서 응답을 얻을 수 없습니다.

관련 정보