Score:0

apache เปิดและปิดทุกบันทึกในทุกการเข้าถึงหรือไม่

ธง in

คำถามเกี่ยวกับการเข้าถึงและบันทึกข้อผิดพลาด โดยเฉพาะอย่างยิ่งกับหลายโฮสต์ (อินสแตนซ์ apache ที่ติดตั้งบนเซิร์ฟเวอร์มากกว่าหนึ่งเครื่อง) และการเก็บบันทึกไว้ที่ส่วนกลางบนระบบไฟล์เครือข่าย

apache ปิดไฟล์บันทึกแต่ละไฟล์หลังจากเขียนทุกครั้งหรือไม่

ถ้าใช่ บนเซิร์ฟเวอร์ที่มีงานยุ่งซึ่งโฮสต์หลาย ๆ ไซต์ซึ่งแต่ละแห่งมีบันทึกของตัวเอง นั่นดูเหมือนจะเป็นคอขวดของประสิทธิภาพหรือไม่

ถ้าไม่ใช่ วิธีแก้ปัญหาเมื่อมีเซิร์ฟเวอร์หลายเครื่องเขียนไปยังตำแหน่งการบันทึกเดียวบนระบบไฟล์เครือข่าย

Michael Hampton avatar
cz flag
คุณกำลังมีปัญหาอะไร
Score:1
ธง cn

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 เพื่อเข้าสู่ระบบไพพ์ แต่ก็มีข้อเสียเช่นกัน

Score:0
ธง it

AFAIK คุณไม่สามารถมีเว็บเซิร์ฟเวอร์ Apache หลายเครื่องพร้อมกันเขียนไปยังไฟล์บันทึกเดียวกันได้

สำหรับคลัสเตอร์ คุณสามารถปล่อยให้ทุกโหนดเขียนลงในไฟล์บันทึกของตัวเอง จากนั้นทำการประมวลผลภายหลังเพื่อรวมเข้าด้วยกัน หรือปล่อยให้ Apache สร้างเหตุการณ์ syslog ส่งเหตุการณ์เหล่านั้นไปยังเซิร์ฟเวอร์ syslog ส่วนกลาง ซึ่งคุณสามารถรวมเป็นไฟล์เดียวหรือคุณ ใช้โซลูชันการรวมบันทึก เช่น ELK Stack, Graylog, Splunk และ/หรืออื่นๆ เพื่อจัดส่งเหตุการณ์บันทึกจากโหนดคลัสเตอร์ทั้งหมดไปยังฐานข้อมูลขนาดใหญ่ข้อมูลเดียว

VagrantPaladin avatar
in flag
ฉันคาดว่านี่คือคำตอบ ดังนั้นฉันจึงทดสอบกับ apache 4 อินสแตนซ์ที่ทำงานใน 4 คอนเทนเนอร์และเขียนทั้งหมดลงในบันทึกเดียวกัน ฉันเริ่มการทดสอบ "โหลด" ด้วยกระบวนการจำนวนมากที่ขอหน้าเว็บและปล่อยให้มันทำงานเป็นเวลาหนึ่งชั่วโมง และมันก็ใช้ได้ดี ฉันคาดหวังอย่างเต็มที่ว่ามีเพียงหนึ่งอินสแตนซ์เท่านั้นที่จะสามารถเขียนบันทึกได้ ดังนั้นฉันจึงไม่รู้ว่าจะทำอะไรจากมัน

โพสต์คำตอบ

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