Score:1

พยายามไปที่ด้านล่างของข้อผิดพลาดหน่วยความจำไม่เพียงพอที่เกี่ยวข้องกับฐานข้อมูล

ธง cn

ฉันได้รับไซต์ที่มีปัญหาอย่างมากซึ่งสร้างขึ้นใน Drupal 7 เมื่อติดตั้งไซต์ในพื้นที่สำหรับนักพัฒนาของฉัน ฉันได้รับข้อผิดพลาด 500 'หน้านี้ไม่ทำงาน' เมื่อดูที่บันทึกการใช้เว็บ ฉันได้รับข้อความนี้:

lmu.[sitename].co.uk [ส. 23 เม.ย. 15:39:03 น. 2565] [ข้อผิดพลาด] [ไคลเอนต์ 86.174.32.32:0] AH01215: ข้อผิดพลาดร้ายแรงของ PHP: หน่วยความจำไม่เพียงพอ (จัดสรร 56098816) (พยายามจัดสรร 459743 ไบต์) ใน /home/sites/[ชื่อไซต์].co.uk/public_html/lmu/includes/database/database.inc ในบรรทัด 2324: /home/sites/[sitename].co.uk/public_html/lmu/index.php

memory_limit คือ 128M และตอนนี้เป็น 512M แต่ฉันได้รับข้อผิดพลาดเดียวกันกับตัวเลขเดียวกัน ฯลฯ

สิ่งนี้เกี่ยวข้องกับบางสิ่งที่มีอยู่ในฐานข้อมูลหรือไม่

การแก้ไขเพิ่มเติม:

อีกปัญหาหนึ่งที่อาจเกี่ยวข้องกันคือบนเซิร์ฟเวอร์อื่นที่ไซต์ทำงานแต่เฉพาะกับ PHP 5.6 เท่านั้น (ทั้งไซต์ที่อัปเดตและไม่ได้อัปเดต) บนเซิร์ฟเวอร์ที่เกี่ยวข้องกับคำถามนี้ก็กำลังเรียกใช้ 5.6 อย่างไรก็ตาม เมื่อฉันพยายามใช้ 7.4 ไซต์ยังคงล้มเหลว แต่ฉันได้รับข้อความแสดงข้อผิดพลาดอื่นที่เกี่ยวข้องกับฐานข้อมูลซึ่งอาจให้เบาะแสเพิ่มเติม:

ข้อยกเว้นที่ไม่ได้ตรวจจับถูกโยนทิ้งในฟังก์ชันปิดระบบ

PDOException: SQLSTATE[HY000]: ข้อผิดพลาดทั่วไป: 2014 ไม่สามารถดำเนินการได้ ข้อความค้นหาในขณะที่ข้อความค้นหาที่ไม่มีบัฟเฟอร์อื่นๆ ทำงานอยู่ พิจารณาใช้ PDOStatement::fetchAll() หรือหากรหัสของคุณเป็นเพียงครั้งเดียว จะทำงานกับ mysql คุณอาจเปิดใช้งานการบัฟเฟอร์แบบสอบถามโดยการตั้งค่า แอตทริบิวต์ PDO::MYSQL_ATTR_USE_BUFFERED_QUERY: ลบจาก {สัญญาณ} ที่ (ค่า = :db_condition_placeholder_0) ; อาร์เรย์ ( [:db_condition_placeholder_0] => 15563655396262a9bd4cef06.08066829 ) ใน lock_release_all() (บรรทัดที่ 269 จาก /home/sites/[sitename].co.uk/public_html/lmu/includes/lock.inc)

cn flag
โดยพื้นฐานแล้ว เป็นไปไม่ได้เลยที่จะพูดโดยไม่ทำโปรไฟล์คำขอหน้าเว็บ หากจำนวนไบต์ที่จัดสรรมีจำนวนมาก คุณอาจมั่นใจพอที่จะชี้ว่าสคริปต์นั้นเป็นตัวการ แต่เปล่าเลย มีขนาด 0.5mb . ดังนั้นการเรียก db นั้นจึงถูกแยกออก และมีเพียงผู้แพ้ที่โชคร้ายที่พยายามดึงความทรงจำบางส่วนเมื่อส่วนที่เหลือทั้งหมดหายไป หรือการเรียก db นั้นถูกเรียกซ้ำ/หมดจดโดยสิ่งอื่นที่ทำให้หน่วยความจำไม่สามารถเรียกคืนได้ ไม่ว่าด้วยวิธีใด คุณจะต้องย้อนกลับไปดูการติดตามสแต็กและดูว่าเกิดอะไรขึ้น
id flag
เห็นด้วย รหัสสุดท้ายในการจัดสรรหน่วยความจำไม่จำเป็นต้องเป็นผู้ร้าย แต่มันอาจจะเป็น
cn flag
ไชโย @ ไคลฟ์ ฉันไม่แน่ใจเกี่ยวกับขั้นตอนที่ดีที่สุดในการตรวจสอบสแต็กในบริบทนี้ (ฉันมาจากพื้นหลังส่วนหน้า โปรดยกโทษให้ฉันด้วย!) คุณช่วยชี้แนะฉันหน่อยได้ไหมถ้าเป็นไปได้
cn flag
โอ้ ฉันพลาดบิต "เลขเดียวกัน" ไปก่อนหน้านี้ ซึ่งค่อนข้างสำคัญจริงๆ แย่แล้ว คุณคิดบวกเกี่ยวกับเรื่องนี้ไหม ถ้าเป็นเช่นนั้น 56098816 คือ 56mb ซึ่งแสดงว่าขีด จำกัด PHP ของคุณไม่ใช่สิ่งที่คุณคิด ... บางทีคุณอาจแก้ไขไฟล์ php.ini ผิดหรือไม่ได้รีสตาร์ท php-fpm/apache หลังจากแก้ไขหรือไม่
cn flag
ตรวจสอบให้แน่ใจว่าคุณกำลังตรวจสอบขีดจำกัดในบริบทที่ถูกต้อง ซึ่งไม่ใช่เรื่องผิดปกติ ในบางสภาพแวดล้อม ที่จะมีการกำหนดค่า PHP ที่แตกต่างกันสำหรับ CLI กับเว็บ ดังนั้นหากคุณได้รับ 128mb บนบรรทัดคำสั่ง ก็จะไม่ได้ จำเป็นต้องหมายความว่าเว็บเซิร์ฟเวอร์ได้รับจำนวนเท่ากัน วิธีตรวจสอบที่ง่ายที่สุดคือเพิ่ม test.php ในเว็บรูทที่มี `
cn flag
@ไคลฟ์ไชโย -
cn flag
ฉันได้เพิ่มข้อมูลเพิ่มเติมสำหรับคำถามแล้ว
cn flag
อาจเป็นปัญหาหน่วยความจำเซิร์ฟเวอร์: https://stackoverflow.com/questions/13955914/php-out-of-memory-error-even-though-memory-limit-not-reached

โพสต์คำตอบ

คนส่วนใหญ่ไม่เข้าใจว่าการถามคำถามมากมายจะปลดล็อกการเรียนรู้และปรับปรุงความสัมพันธ์ระหว่างบุคคล ตัวอย่างเช่น ในการศึกษาของ Alison แม้ว่าผู้คนจะจำได้อย่างแม่นยำว่ามีคำถามกี่ข้อที่ถูกถามในการสนทนา แต่พวกเขาไม่เข้าใจความเชื่อมโยงระหว่างคำถามและความชอบ จากการศึกษาทั้ง 4 เรื่องที่ผู้เข้าร่วมมีส่วนร่วมในการสนทนาด้วยตนเองหรืออ่านบันทึกการสนทนาของผู้อื่น ผู้คนมักไม่ตระหนักว่าการถามคำถามจะมีอิทธิพลหรือมีอิทธิพลต่อระดับมิตรภาพระหว่างผู้สนทนา