Hôm nay tôi nhận được tin nhắn từ một người bạn trên WeChat, nhắc nhở rằng blog không thể mở được. Chắc chắn, sau khi mở nó, nó hiển thị trực tiếp "Trang web của bạn đã gặp phải một lỗi nghiêm trọng." Nếu bạn suy nghĩ kỹ, ngoài việc bị tấn công gần đây, blog còn cài đặt plug-in W3 Total Cache. về cơ bản có thể kết luận rằng plug-in là nguyên nhân.

Sau khi điều tra, người ta phát hiện ra lỗi PHP là: "Uncaught RedisException: Lệnh OOM không được phép khi sử dụng bộ nhớ", cho biết Redis không thể ghi dữ liệu vào bộ nhớ, ngay cả khi máy chủ được khởi động lại. Giải pháp cuối cùng là điều chỉnh cấu hình Redis và tăng kích thước bộ nhớ mặc định.

Bài viết này sẽ chia sẻ quy trình khắc phục sự cố nếu trang web WordPress của bạn gặp phải lỗi nghiêm trọng. Dưới đây là các bài viết khác về xây dựng trang web WordPress:

  1. Plugin làm nổi bật mã toàn diện và siêu tương thích của WordPress Plug-in thiết yếu Enlighter-WP
  2. Poedit, một công cụ thiết yếu để Trung Quốc hóa các chủ đề và plugin WordPress – tự động tạo các tệp .Po và .Mo
  3. Sử dụng Elaticsearch làm công cụ tìm kiếm trên trang web WordPress cài đặt elasticSearch, kibana và ik trình phân đoạn từ

1. Bật chế độ WP Debug

Khi WordPress của bạn gặp lỗi, đừng hoảng sợ. Hãy chọn mở chế độ Debug của WordPress và gọi lỗi PHP. Tham khảo phương pháp: Chế độ chẩn đoán lỗi WordPress - chuyên xử lý các trang WP trống, lỗi server 500 và xung đột plug-in.

2. Tìm lỗi nghiêm trọng của WP

Sau khi bật chế độ Debug của WordPress, trang web sẽ hiển thị lỗi PHP như sau:

Lỗi nghiêm trọng: Uncaught RedisException: Lệnh OOM không được phép khi sử dụng bộ nhớ > 'maxmemory' trong /xxx/wzfou.com/wp-content/plugins/w3-total-cache/Cache_Redis.php:68 Stack. dấu vết: #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, 'options', 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- nội dung/object-cache.php(95): W3TCObjectCache_WpObjectCache->add('alloptions', Array, 'options', 0) #5 /xxxx/wzfou.com/wp-includes/option.php(258): trong /xxxx/wzfou.com/wp-content/plugins/w3-total-cache/Cache_Redis.php trực tuyến 68

Thông báo lỗi: "Uncaught RedisException: Lệnh OOM không được phép khi sử dụng bộ nhớ > 'maxmemory'. trong /xxx/wzfou.com/wp-content/plugins/w3-total-cache/Cache_Redis.php", rõ ràng là do Redis đã được bật Bộ nhớ đệm đối tượng gây ra lỗi. Đã xem cấu hình Redis:

root@localhost:~# redis-cli
127.0.0.1:6379> bộ nhớ thông tin
# Bộ nhớ
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_dataset:2424 48330
used_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
used_memory_lua_human:37.00K
used_memory_scripts:0
used_memory_scripts_human :0B
number_of_cached_scripts:0
bộ nhớ tối đa:251000000
maxmemory_human:239.37M
maxmemory_policy:noeviction
allocator_frag_ratio:1.04
allocator_frag_bytes:105285 76
phân bổ ator_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<ph3 5>nhật ký mem_replication_back: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>

Có thể thấy từ cấu hình: bộ nhớ đã sử dụng used_memory_human:238.57M, hệ thống cho phép Redis sử dụng bộ nhớ tối đa: maxmemory_human:239.37M, nó thực sự đã bị chiếm và dung lượng không còn nữa.

3. Giải quyết vấn đề thiếu bộ nhớ Redis

Nếu bạn đang sử dụng Oneinstack, bạn có thể tham khảo phương pháp sau để sửa đổi cấu hình của Redis. Nhân tiện, bạn cũng có thể sửa đổi cấu hình của Memcached để tăng bộ nhớ mặc định:

#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#重启生效

Đặt chính sách loại bỏ: maxmemory-policy dễ bay hơi-lru

Một số chiến lược loại bỏ khác được mô tả dưới đây:

sự trục xuất

Chính sách mặc định

Không bị đuổi

Khi không có đủ bộ nhớ để Redis sử dụng, một ngoại lệ sẽ được báo cáo khi thực hiện lệnh ghi: redis.Exceptions.ResponseError,OOM command not allow when used Memory > ‘maxmemory’

dễ bay hơi-lru

Đối với các khóa đã hết hạn, hãy thực hiện chiến lược loại bỏ lru (loại bỏ dữ liệu ít được sử dụng gần đây nhất)

Nếu không có khóa hết hạn, một ngoại lệ sẽ được báo cáo khi thực hiện lệnh ghi khi bộ nhớ không đủ: redis.Exceptions.ResponseError, lệnh OOM không được phép khi sử dụng bộ nhớ > 'maxmemory', giống như chính sách không trục xuất

allkeys-lru

Thực thi lru cho tất cả các phím

Không có cách nào để hạn chế một số thuật toán xóa một số khóa nhất định.

Nếu ứng dụng của bạn cần lưu giữ một số dữ liệu, vui lòng không sử dụng chiến lược allkeys-lru

dễ bay hơi-ngẫu nhiên

Đối với các khóa hết hạn, chọn ngẫu nhiên một khóa để trục xuất

allkeys-ngẫu nhiên

Đối với tất cả các phím, chọn ngẫu nhiên một phím để trục xuất

dễ bay hơi-ttl

Trong số các khóa đã hết hạn, khóa có giá trị ttl nhỏ nhất sẽ bị loại bỏ trước tiên.

4. Tóm tắt

Tăng tốc tối ưu hóa WordPress là một chủ đề phổ biến để đạt được kết quả tốt nhất, chúng ta thường cần điều chỉnh hợp lý chiến lược tối ưu hóa dựa trên cấu hình thực tế của máy chủ.

Về việc tối ưu và tăng tốc blog, tôi có viết đề tài tóm tắt: Các công nghệ ứng dụng chính và tính năng hỗ trợ của blog - Tổng hợp các phương pháp tối ưu hóa website và máy chủ của blog.

Để lại một câu trả lời