Oggi ho ricevuto un messaggio da un amico su WeChat, che mi ricorda che il blog non può essere aperto. Infatti, dopo averlo aperto, veniva visualizzato direttamente "Il tuo sito ha riscontrato un errore fatale". Se ci pensi attentamente, oltre ad essere stato attaccato di recente, il blog ha installato il plug-in W3 Total Cache. in sostanza si può concludere che la colpa è del plug-in.

Dopo un'indagine, è stato riscontrato che l'errore PHP era: "Uncaught RedisException: comando OOM non consentito quando viene utilizzata la memoria", indicando che Redis non può scrivere dati nella memoria, anche se il server viene riavviato. La soluzione finale è regolare la configurazione di Redis e aumentare la dimensione della memoria predefinita.

Questo articolo condividerà il processo su come risolvere il problema che ha riscontrato un errore fatale nel tuo sito WordPress. Qui sono disponibili altri articoli sulla creazione di siti Web WordPress:

  1. WordPress plug-in completo e super compatibile che evidenzia il plug-in essenziale Enlighter-WP
  2. Poedit, uno strumento essenziale per cinesizzare temi e plug-in WordPress: genera automaticamente file .Po e .Mo
  3. Utilizza Elasticsearch come finestra mobile di ricerca in loco di WordPress per installare elasticSearch, kibana e ik word segmenter

1. Attiva la modalità Debug WP

Quando il tuo WordPress rileva un errore, non farti prendere dal panico. Scegli di aprire la modalità Debug di WordPress e richiama gli errori PHP Riferimento al metodo: modalità di diagnosi degli errori di WordPress: è specializzata nel trattamento di pagine WP vuote, errori del server 500 e conflitti di plug-in.

2. Trova errori fatali WP

Dopo aver attivato la modalità Debug di WordPress, la pagina Web visualizzerà gli errori PHP, come segue:

Errore irreversibile: RedisException non rilevato: comando OOM non consentito quando viene utilizzata la memoria > 'maxmemory' in /xxx/wzfou.com/wp-content/plugins/w3-total-cache/Cache_Redis.php:68 Stack. traccia: #0 /xxxxx/wzfou.com/wp-content/plugins/w3-total-cache/Cache_Redis.php(68): Redis->setex('w3tc_1987146988…', 180, 'a:2:{s: 7:"conte…') #1 /xxxx/wzfou.com/wp-content/plugins/w3-total-cache/ObjectCache_WpObjectCache_Regular.php(293): W3TCCache_Redis->set('0optionsallopti…', Array, 180) # 2 /xxx/wzfou.com/wp-content/plugins/w3-total-cache/ObjectCache_WpObjectCache_Regular.php(388): W3TCObjectCache_WpObjectCache_Regular->set('alloptions', Array, 'opzioni', 0) #3 /xxx/wzfou .com/wp-content/plugins/w3-total-cache/ObjectCache_WpObjectCache.php(77): W3TCObjectCache_WpObjectCache_Regular->add('alloptions', Array, 'options', 0) #4 /xxxx/wzfou.com/wp- content/object-cache.php(95): W3TCObjectCache_WpObjectCache->add('alloptions', Array, 'options', 0) #5 /xxxx/wzfou.com/wp-includes/option.php(258): in /xxxx/wzfou.com/wp-content/plugins/w3-total-cache/Cache_Redis.php on line 68

Messaggio di errore: "Uncaught RedisException: comando OOM non consentito quando viene utilizzata la memoria > 'maxmemory'. in /xxx/wzfou.com/wp-content/plugins/w3-total-cache/Cache_Redis.php", ovviamente perché Redis è attivato La memorizzazione nella cache degli oggetti ha causato l'errore. Hai visualizzato la configurazione di Redis:

root@localhost:~# redis-cli
127.0.0.1:6379> info memory
# Memory
used_memory:250161160
used_memory_human:238.57M
used_memory_rss:274608128
used_memory_rss_human:261.89 M
used_memory_peak:254227888
used_memory_peak_human:242.45M
used_memory_peak_perc:98.40%
used_memory_overhead:7712830
used_memory_startup:803088
used_memory_data set:2424 48330
usato_memory_dataset_perc:97,23%
allocator_allocated:250366144
allocator_active:260894720
allocator_resident:268197888
total_system_memory:2111430656
total_system_memory_human:1.97G
used_memory_lua: 37888
usato_memory_lua_human:37.00K
usato_memory_scripts:0
used_memory_scripts_human:0B
number_of_cached_scripts:0
maxmemory:251000000
maxmemory_human:239.37M
maxmemory_policy:noeviction
allocator_frag_ratio:1.04
allocator_frag_bytes:10 528576
allocatore_rss_ratio:1.03
allocator_rss_bytes: 7303168
rss_overhead_ratio:1.02
rss_overhead_bytes:6410240
mem_fragmentation_ratio:1.10
mem_fragmentation_bytes:24487992
mem_not_counted_for_evict: 0
mem_replication_back log:0
mem_clients_slaves:0
mem_clients_normal:390678
mem_aof_buffer:0
mem_allocator:jemalloc-5.1.0
active_defrag_running:0
lazyfree_pending_objects:0
127.0.0.1:6379>

Si vede dalla configurazione: la memoria occupata used_memory_human:238.57M, la memoria massima consentita dal sistema per Redis è: maxmemory_human:239.37M, infatti è occupata e lo spazio è esaurito.

3. Risolvi il problema della memoria Redis insufficiente

Se utilizzi Oneinstack, puoi fare riferimento al seguente metodo per modificare la configurazione di Redis A proposito, puoi anche modificare la configurazione di Memcached per aumentare la memoria predefinita:

#Redis默认端口:6379
#Memcached默认端口:11211
#默认监听地址:127.0.0.1

#调整Redis最大内存大小?

vi /usr/local/redis/etc/redis.conf

maxmemory 1024000000#单位字节,默认1G,可调整

service redis-server restart#重启生效

#增加Memcached最大内存大小?

vi/etc/init.d/memcached

CACHESIZE=256 #单位M,默认256M,可调整

service memcached restart#重启生效

Imposta la politica di eliminazione: maxmemory-policy volatile-lru

Diverse altre strategie di eliminazione sono descritte di seguito:

no sfratto

Politica predefinita

Non sfrattato

Quando non c'è abbastanza memoria da utilizzare per Redis, verrà segnalata un'eccezione durante l'esecuzione del comando di scrittura: redis.exceptions.ResponseError,OOM comando non consentito quando memoria utilizzata > 'maxmemory'

volatile-lru

Per le chiavi scadute, eseguire la strategia di eliminazione lru (eliminare i dati utilizzati meno di recente)

Se non è presente alcuna chiave scaduta, verrà segnalata un'eccezione durante l'esecuzione del comando di scrittura quando la memoria è insufficiente: redis.exceptions.ResponseError, comando OOM non consentito quando memoria utilizzata > 'maxmemory', lo stesso della politica di noeviction

allkeys-lru

Esegui lru per tutte le chiavi

Non è possibile limitare alcuni algoritmi all'eliminazione di determinate chiavi.

Se la tua applicazione deve rendere persistenti alcuni dati, non utilizzare la strategia allkeys-lru

volatile-casuale

Per le chiavi scadute, seleziona casualmente una chiave da espellere

allkeys-random

Per tutte le chiavi, seleziona casualmente una chiave da espellere

volatile-ttl

Tra le chiavi scadute, quella con il valore ttl più piccolo verrà eliminata per prima.

4. Riepilogo

L'accelerazione dell'ottimizzazione di WordPress è un argomento comune. Per ottenere i migliori risultati, spesso dobbiamo adattare ragionevolmente la strategia di ottimizzazione in base alla configurazione effettiva del nostro server.

Per quanto riguarda l'ottimizzazione e l'accelerazione del blog, ho scritto un argomento riassuntivo: Principali tecnologie applicative e funzionalità di supporto dei blog - Riepilogo dei metodi di ottimizzazione del sito web e del server del blog.

lascia un commento