apache ปิดไฟล์บันทึกแต่ละไฟล์หลังจากเขียนทุกครั้งหรือไม่
ใช้แหล่งที่มาได้ที่:
https://svn.apache.org/viewvc/httpd/httpd/branches/2.4.x/modules/loggers/mod_log_config.c?view=markup
คุณสามารถอ่านได้จาก:
251 * log_writer เป็น NULL ก่อนที่ไฟล์บันทึกจะถูกเปิดขึ้นและเป็น
252 * ตั้งค่าเป็นโครงสร้างทึบแสง (ปกติคือ fd) หลังจากเปิด
แบบว่าเปิดแปปเดียวเอง
ในความเป็นจริง หากคุณดูที่โค้ด โค้ดจะเปิดตั้งแต่เนิ่นๆ เมื่อเริ่มต้น และจากนั้นจะไม่ปิด ด้วยเหตุผลด้านประสิทธิภาพที่ชัดเจน
ถ้าไม่ใช่ วิธีแก้ปัญหาเมื่อมีเซิร์ฟเวอร์หลายเครื่องเขียนไปยังตำแหน่งการบันทึกเดียวบนระบบไฟล์เครือข่าย
ห้ามทำเช่นนั้นโดยเด็ดขาดด้วยเหตุผลสองประการ ก่อนอื่นอย่าเข้าสู่ระบบจากระยะไกลด้วยวิธีนั้น บันทึกในเครื่อง (และจัดส่งไฟล์บันทึกแยกจากกัน คุณสามารถหมุนเวียนทุกชั่วโมงได้ เป็นต้น) หรือใช้ daemon ที่เหมาะสม syslog
รู้ตามค่าเริ่มต้นว่าจะจัดส่งเนื้อหาบันทึกโดย UDP (หรือ TCP) เป็นค่าเริ่มต้น เช่นเดียวกับโซลูชันที่ใหม่กว่า อย่าเมานต์ดิสก์ระยะไกลและเขียนไฟล์บันทึกลงไป ซึ่งจะทำให้ประสิทธิภาพการทำงานลดลงและสร้างปัญหามากมาย (โดยเฉพาะถ้าคุณหมายถึงรีโมตเหมือนใน "NFS")
และแม้ว่าในเครื่อง แต่ละแอปพลิเคชันควรบันทึกลงในไฟล์บันทึกของตัวเอง ไม่มีหลายแอปพลิเคชันที่บันทึกลงในไฟล์เดียวกัน สิ่งนี้จะสร้างเงื่อนไขการแย่งชิงทุกชนิด เขียนทับ ฯลฯ Apache เองก็เป็นแอปพลิเคชันเดียวแม้ว่าจะแยก แต่ถ้าคุณมี Apache 2 เครื่องที่ทำงานแยกจากกันบนโฮสต์เดียวกันโดยมีการกำหนดค่าต่างกัน แต่ละเครื่องควรบันทึกลงในไฟล์บันทึกของตนเอง
หรือดูที่คุณลักษณะ Apache เพื่อเข้าสู่ระบบไพพ์ แต่ก็มีข้อเสียเช่นกัน