Điểm:1

Đang cố gắng tìm hiểu tận cùng lỗi hết bộ nhớ liên quan đến cơ sở dữ liệu

lá cờ cn

Tôi đã kế thừa một trang web có vấn đề nghiêm trọng được xây dựng trong Drupal 7. Khi cài đặt trang web trên không gian dành cho nhà phát triển của mình, tôi gặp lỗi 500 'Trang này không hoạt động'. Nhìn vào nhật ký web, tôi nhận được thông báo này:

lmu.[sitename].co.uk [Thứ bảy ngày 23 tháng 4 15:39:03 năm 2022] [lỗi] [khách hàng 86.174.32.32:0] AH01215: PHP Lỗi nghiêm trọng: Hết bộ nhớ (được phân bổ 56098816) (đã cố phân bổ 459743 byte) trong /home/sites/[sitename].co.uk/public_html/lmu/includes/database/database.inc trên dòng 2324: /home/sites/[sitename].co.uk/public_html/lmu/index.php

memory_limit là 128M và hiện tại là 512M nhưng tôi gặp chính xác cùng một lỗi với cùng số, v.v.

Điều này có liên quan đến nội dung nào đó có trong DB không?

Chỉnh sửa bổ sung:

Một vấn đề khác, có thể liên quan, là trên một máy chủ khác, trang web chạy nhưng chỉ với PHP 5.6 (cả phiên bản cập nhật và không cập nhật của trang web). Trên máy chủ mà câu hỏi này liên quan đến nó cũng đang chạy 5.6. Tuy nhiên, khi tôi cố gắng sử dụng 7.4, trang web vẫn bị lỗi nhưng tôi nhận được một thông báo lỗi khác liên quan đến Cơ sở dữ liệu có thể cung cấp thêm manh mối:

Ngoại lệ chưa bắt được ném vào chức năng tắt máy.

PDOException: SQLSTATE [HY000]: Lỗi chung: 2014 Không thể thực thi truy vấn trong khi các truy vấn không có bộ đệm khác đang hoạt động. Cân nhắc sử dụng PDOStatement::fetchAll(). Ngoài ra, nếu mã của bạn chỉ bao giờ sẽ chạy với mysql, bạn có thể kích hoạt bộ đệm truy vấn bằng cách đặt thuộc tính PDO::MYSQL_ATTR_USE_BUFFERED_QUERY.: XÓA TỪ {semaphore} WHERE (giá trị = :db_condition_placeholder_0) ; Mảng ( [:db_condition_placeholder_0] => 15563655396262a9bd4cef06.08066829 ) trong lock_release_all() (dòng 269 của /home/sites/[sitename].co.uk/public_html/lmu/includes/lock.inc).

lá cờ cn
Về cơ bản, không thể nói mà không lập hồ sơ yêu cầu trang - nếu lượng byte được phân bổ lớn, bạn có thể đủ tự tin để chỉ ra tập lệnh đó là thủ phạm, nhưng không phải vậy, đó là 0,5mb . Vì vậy, lệnh gọi db đó đã bị cô lập và chỉ là kẻ thua cuộc không may mắn đã cố lấy một số bộ nhớ khi tất cả phần còn lại đã biến mất hoặc lệnh gọi db đó đang được gọi một cách đệ quy/triệt để bởi một thứ khác đang ngăn không cho bộ nhớ được thu hồi. Dù bằng cách nào, bạn cần quay lại theo dõi ngăn xếp và xem điều gì đang xảy ra
lá cờ id
Đã đồng ý. Mã cuối cùng để phân bổ bộ nhớ không phải là thủ phạm. Nhưng nó có thể được.
lá cờ cn
Chúc mừng @Clive. Tôi không chắc chắn về quy trình tốt nhất để điều tra ngăn xếp trong bối cảnh này (Tôi đến từ nền tảng giao diện người dùng, xin vui lòng tha thứ cho tôi!). Bạn có thể vui lòng cho tôi một số gợi ý nếu có thể?
lá cờ cn
Ồ, tôi đã bỏ lỡ phần "cùng số" trước đây, điều đó thực sự khá quan trọng, thật tệ - bạn có chắc chắn về điều đó không? Nếu vậy, 56098816 chính xác là 56mb, điều này cho thấy giới hạn PHP của bạn không như bạn nghĩ...có thể bạn đang chỉnh sửa tệp php.ini sai hoặc chưa khởi động lại php-fpm/apache sau khi thay đổi nó?
lá cờ cn
Ngoài ra, hãy đảm bảo rằng bạn đang kiểm tra giới hạn trong ngữ cảnh phù hợp - không có gì lạ, trong một số môi trường, có cấu hình PHP khác nhau cho CLI so với web, vì vậy nếu bạn nhận được 128mb trên dòng lệnh, thì không nhất thiết có nghĩa là máy chủ web đang nhận được số tiền tương tự. Cách đơn giản nhất để kiểm tra là thêm test.php vào web root có chứa `
lá cờ cn
Chúc mừng @Clive -
lá cờ cn
Tôi đã thêm một số thông tin bổ sung cho câu hỏi.
lá cờ cn
Có thể là sự cố bộ nhớ máy chủ: https://stackoverflow.com/questions/13955914/php-out-of-memory-error-even-though-memory-limit-not-reached

Đăng câu trả lời

Hầu hết mọi người không hiểu rằng việc đặt nhiều câu hỏi sẽ mở ra cơ hội học hỏi và cải thiện mối quan hệ giữa các cá nhân. Ví dụ, trong các nghiên cứu của Alison, mặc dù mọi người có thể nhớ chính xác có bao nhiêu câu hỏi đã được đặt ra trong các cuộc trò chuyện của họ, nhưng họ không trực giác nhận ra mối liên hệ giữa câu hỏi và sự yêu thích. Qua bốn nghiên cứu, trong đó những người tham gia tự tham gia vào các cuộc trò chuyện hoặc đọc bản ghi lại các cuộc trò chuyện của người khác, mọi người có xu hướng không nhận ra rằng việc đặt câu hỏi sẽ ảnh hưởng—hoặc đã ảnh hưởng—mức độ thân thiện giữa những người đối thoại.