Apache + varnish ปัญหาการแสดงผลไม่ตรงใน mod_status

ตอนนี้ใช้ varnish อยู่ครับ โดยใช้วิธี fw port. พบปัญหาเวลาแสดงผลใน IP/server-status (mod_status) มีการแสดงค่าไม่ค่อยตรง (เมื่อเปรียบเทียบกับการใช้ apache อย่างเดียว) เช่น

Client VHost Request
IPเซิร์ฟ localhost NULL

รวมถึงการนับการใช้ CPU ก็ไม่ตรงบาง url ไปถึง [COLOR=#000000][FONT=Times New Roman]228.53 ทั้งที่เดิม สูงสุดเป็นแค่หลัก 10-20

คำถามครับ

  1. ท่านที่ใช้ varnish โดยโยก apache ไป 8080 แทนการ fw port เจอปัญหานี้หรือไม่

  2. จะแก้ปัญหายังไงดี[/FONT][/COLOR]

หน้า status สร้างและส่งมาจาก apache ครับ ยังก็ตรง 100% เพราะ varnish คงไม่เอาข้อมูลที่ได้จาก apache มาเปลี่ยนค่าก่อนส่งให้เราดูหรอกครับ
ถ้าเห็นค่าสูงกว่าเดิม ก็แปลว่ามันสูงกว่าเดิมนั่นแหละ ของผมใช้ย้าย port apache ก็ค่า cpu สูงเหมือนกันครับ น่าจะเป็นผลมาจากการทำงานของ varnish

ที่ผมพบปัญหามีแค่ว่า ถ้าเรียกผ่าน varnish บางครั้งมันเอาหน้าที่ cache ไว้มาแสดง คือ refresh กี่ทีก็ได้หน้าเดิมค่าไม่เปลี่ยนแปลง
ก็ใช้วิธีเข้าตรงไปที่ port ของ apache เลย (ขี้เกียจไปเขียน vcl ใน varnish)

pass mod_status หรือยังครับ

sub vcl_recv {

if (req.url ~ “server-(info|status)”) {
return (pass);
}

}

ความเห็นส่วนตัวอีกนิดนึงนะครับ varnish กิน cpu usage พอๆกับ apache
แต่มีส่วนชดเชยเรื่องการ accelerator ที่ยอดเยี่ยม

เรียกจาก benchmark จาก vps 1core 1GB ที่รัน wordpress
ab > varnish > nginx > wordpress
ab -k -c 100 -n 1000 http://www.MYVPS.com/
Requests per second: 1632.19 [#/sec] (mean)
Time per request: 61.267 [ms] (mean)
Time per request: 0.613 [ms] (mean, across all concurrent requests)
Transfer rate: 15003.69 [Kbytes/sec] received

  • ปล ถ้ามี cpu core แยะกว่านี้ น่าจะเร็วกว่านี้ได้อีก

ab -k -c 100 -n 1000 http://www.MYVPS.com:8080/
ab > nginx > wordpress
Requests per second: 7.17 [#/sec] (mean)
Time per request: 13943.421 [ms] (mean)
Time per request: 139.434 [ms] (mean, across all concurrent requests)
Transfer rate: 1.66 [Kbytes/sec] received

varnish มันจะมีปัญหาเอ๋อๆหรือเพี้ยนๆถ้าเขียน vcl ให้มันไม่ดีครับ