Fanboi Channel

Development Room - Build 1

Last posted

Total of 236 posts

207 Nameless Fanboi Posted ID:9.66F8pGVO

>>206 ขอบคุณครับ เรื่องจำกัด 10 กระทู้ อาจจะเพิ่มเป็นซัก 15-20 ดูก่อน ส่วน interval จะยังเป็น 5 นาที เหมือนเดิม
ตอนนี้กลัวปัญหาว่าถ้ากระทู้เยอะเกินไปจะยิ่งโหลดช้า แล้วก็ background service ที่เช็ค update มันจะสูบแบตอีกอย่างด้วยน่ะครับ

208 Nameless Fanboi Posted ID:GgVwonlJwO

>>206 ควาย

209 Nameless Moderator Posted ID:0

>>207 รับทราบครับ ตอนนี้มี TODO อยู่คือ >>194 เดี๋ยวเสร็จโปรเจคของเว็บที่ทำอยู่ตอนนี้จะเริ่มลุย API ต่อครับ

210 Nameless Fanboi Posted ID:jo/+7Lg2bg

feedback เรื่องใน >>200 ว่าเดี๋ยวนี้แทบไม่เจอปัญหาแล้วนะครับ
มีนานๆทีพิมพ์อะไรธรรมดาแล้วโดนคิดว่าเป็นสแปมบ้าง แต่ลองตัดเน็ตแล้วต่อใหม่ หรือปรับคำนิดหน่อยก็หายครับ
ขอบคุณครับ

211 Nameless Moderator Posted ID:0

>>210 โอเคครับ เดี๋ยวจะลองปรับค่าดู เป็นเพราะ IP ไทยโดนใช้เป็น botnet เยอะมาก เลยโดน flag เยอะเป็นพิเศษ

212 Nameless Fanboi Posted ID:Ii9M6t3XnP

อยากให้มีปุ่มสำหรับเช็คว่าตอนนี้ IP เราโดนแบนที่บอร์ดไหนถึงเมื่อไหร่บ้างน่ะครับ แบบเป็น link เล็กๆใน footer ก็ได้

213 Nameless Fanboi Posted ID:gWBwQpJA8I

รบกวนขอแจ้งลบกระทู้นี้จะได้มั้ยคะ? https://fanboi.ch/netwatch/5948/recent/

214 Nameless Fanboi Posted ID:6D3MN33XFd

ใช้ไวไฟเอไอเอสแล้วตอบทู้ไม่ได้ครับ ทั้งคอมทั้งมือถือที่ต่อไวไฟขึ้น The request has been identified as spam by Akismet and therefore rejected. ตลอด มีวิธีแก้ไหมครับ 3บีบีทีโอทีตอบได้ปกติ

215 Nameless Moderator Posted ID:0

>>214 ได้ใส่ลิงค์อะไรไปหรือเปล่าครับ?

216 Nameless Fanboi Posted ID:sfyOXMETjj

>>215 ไม่ได้ใส่ครับ พิมพ์ข้อความปกติครับ

217 Nameless Fanboi Posted ID:VnLS9h5iSl

>>214 >>215 ตอนนี้แก้ได้แล้วครับ ผมเมลไปหาทาง akismet ทางนั้นบอกว่า ip address เคยถูกใช้โดยพวก spammer ครับ แปะบอกไว้เผื่อใครเจอเคสแบบนี้ ขอบคุณครับ

218 Nameless Moderator Posted ID:0

>>217 ขอบคุณที่แจ้งไปทาง Akismet ให้นะครับ ขออภัยจริงๆ…

219 Nameless Moderator Posted ID:0

2018/11/04
- อัพเกรดบอร์ดเป็นเวอร์ชั่น 9728c2f
- เปลี่ยนจากการแคชเนื้อหาบางส่วนด้วย Memcached ไปแคชด้วย Redis ทั้งหมด
- ปรับปรุงรุ่นของ FreeBSD จาก 11.1-RELEASE เป็น 11.2-RELEASE
- ปรับปรุงรุ่นของ Varnish จาก 4.0 เป็น 6.0
- ปรับปรุงระบบ backup ทั้งหมดใหม่ โดยทำการเข้ารหัสข้อมูล backup ทั้งหมดด้วย GPG key
- เปลี่ยนไปใช้งาน Let's Encrypt สำหรับ HTTPS แทนผู้ให้บริการ certificate เดิม
- เปิดใช้งาน HTTP/2.0

การเปลี่ยนแปลงครั้งนี้ โดยหลักๆ แล้ว จะช่วยให้เว็บไซต์สามารถเข้าถึงได้รวดเร็วขึ้น

220 Nameless Fanboi Posted ID:Ccsse+ONq3

รู้สึกเหมือน 1-2 วันนี้ เจอ error 503 บ้างน่ะครับ
แต่เป็นแล้วก็เป็นไม่นาน ไม่กี่นาทีก็หาย
ไม่แน่ใจว่าเป็นมาก่อนอัพเดตใน >>219 รึเปล่า
https://imgur.com/RH3FZo7

221 Nameless Moderator Posted ID:0

>>220 น่าจะเป็นไปได้ 2 อย่าง คือ

1. ช่วงก่อนทำการอัพเกรดระบบ ทางเว็บได้ทำการลดจำนวน app server จาก 4 instance เหลือ 2 instance
ถ้าหาก 503 เพราะเหตุผลนี้ ตอนนี้ควรจะหายแล้วเพราะเพิ่มจำนวน app server เป็น 3 instance แล้ว

2. ตอนนี้เว็บไซต์ฯ ติดตั้ง CI/CD pipeline สำหรับ deploy อัตโนมัติ หลังจากอัพเกรดระบบทำการเทสต์ประมาณ 3 ครั้ง
แต่เวลาที่ CI/CD deploy จะทำการ deploy ทีละเซิฟเวอร์ และ Varnish มี liveness check จึงไม่น่ามีปัญหา
ตอนนี้ยังไม่แน่ใจว่าปัญหาจะมาจากไหน ถ้าหากยังเป็นอยู่หลังจากนี้ รบกวนแจ้งอีกทีนะครับ

222 Nameless Moderator Posted ID:0

>>221 ลองไปเช็ค log แล้วพบว่ามี 503 อยู่พอสมควร ตอนนี้ลองปรับค่าของ liveness check เล็กน้อย
ให้เช็คบ่อยขึ้นและ tolerance สูงขึ้น ถ้าหากยังไม่หาย จะลองเพิ่ม app server เป็น 4 instance ตามเดิมดูครับ
ตอนนี้ทดสอบ optimize เซิฟเวอร์ที่ทำไปอยู่ว่าได้ผลขนาดไหน เลยลดเป็น 3 ไว้ครับ

223 Nameless Fanboi Posted ID:8Z/eCQ4VV5

เนทบ้าน TOT โพสไม่ได้เลยครับ บอกว่าติดเรื่อง vpn proxy มันคืออะไรครับ ต้องแก้ยังไงครับ
ใช้เนทมือถือ AIS ก็โพสไม่ได้ครับ นี่มันเกิดอะไรขึ้น? ทุกวันนี้ต้องใช้คอมทีทำงานเท่านั้นถึงจะโพสได้น่ะ

224 Nameless Fanboi Posted ID:HFWpNWBvjg

>>223 ปิดเร้าเตอร์แล้วเปิดใหม่ดู

225 Nameless Moderator Posted ID:0

>>223 กำลังปรับปรุงระบบเช็ค proxy กับเช็ค ban อยู่ รบกวนอดใจรออีกนิดนะครับ

226 Nameless Fanboi Posted ID:jWk3to1rX3

เคสใน >>220 ไม่เจอแล้วนะครับ

227 Nameless Fanboi Posted ID:DRZ30hUcNX

ช่วงนี้เจอสคริป 4chan X ที่ใช้กับ 4chan แล้วค่อนข้างถูกใจกับการ hide ความเห็นที่ดีมากขึ้นเลยลองมาเล่าให้ฟังเผื่อเป็นไอเดียได้ครับ

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

228 Nameless Moderator Posted ID:0

>>227
มีแผนจะทำในลักษณะคล้ายๆ กับระบบ NG ที่มีพูดถึงไว้ใน >>>/meta/5548/512-514/ ครับ

229 Nameless Moderator Posted ID:0

2018/12/11
- เพิ่มความสามารถในการล็อคกระทู้อัตโนมัติ ถ้าเก่ากว่าที่กำหนดตามแต่ละบอร์ด
- ปรับปรุงระบบเวลาทั้งหมดใหม่ โดยจะใช้เวลาจากฐานข้อมูล (แก้ไขกรณีเช่นโพส 50 เวลาโพสอยู่หลังโพส 51)
- เปลี่ยนไปใช้ Gunicorn และเพิ่มจำนวน worker เป็น 3 worker ต่อ 1 เซิฟเวอร์เพื่อเพิ่มประสิทธิภาพ

230 Nameless Fanboi Posted ID:i2oRL2PCjh

ทดสอบระบบแบนในกระทู้นี้อีกทีก่อนโพส announce

231 Nameless Moderator Posted ID:0

2018/12/17
- เพิ่มความสามารถในการแบน IP เฉพาะกระทู้

232 Nameless Fanboi Posted ID:fLNMHmjFTF

แอดมินลองเล่าให้ฟังคร่าวๆได้มั้ยครับว่าทำไมเลือกการใช้ redis แทน mem
คิดว่าการย้ายออกไปแล้วจะอ่าน cache ทีต้องต่อออกไปข้างนอกนี่คุ้มกับข้อดีอื่นๆของมันมั้ย
แล้วออกแบบการเก็บ key value ไว้ประมาณไหน การดึงค่า หรืออัพเดตค่าเข้าไป ทำเมื่อไหร่ยังไงบ้าง

233 Nameless Moderator Posted ID:0

>>232 จริงๆ assets hash ที่อยู่ข้างหลังไฟล์ CSS ใน URL นี่ใช้ LRU cache ครับ

เหตุผลที่ไม่ใช้ memory ในการ cache ส่วนอื่นๆ คือเรามีความจำเป็นที่จะ
1. รัน process web server หลาย process เพื่อรองรับ traffic spike
2. สามารถ expire ค่าใน cache ได้อิสระ (และต้อง populate ทุก process ตาม 1)

ในความเป็นจริง สามารถใช้ memory cache ที่ฝั่ง Python ได้ (ก็คือแต่ละ process เก็บ cache แยกกัน)
แต่ถ้าใช้ memory cache แล้วต้องการจะทำข้อ 2 ให้มี complexity น้อยที่สุด ก็ต้อง expire จาก cache key
เช่นตั้ง key สำหรับ cache เป็น cache:key:timestamp (เช่น settings:timezone:1545288880)

ทีนี้มันจะมีปัญหาว่า timestamp นี่ต้องเป็น last updated timestamp แล้วเราจะเอา timestamp นี้มาจากไหน
ง่ายที่สุดก็คงเป็นเก็บลงฐานข้อมูล ซึ่งนั่นก็หมายถึงการต้อง hit ฐานข้อมูลตลอดเวลา เวลาที่ต้องดึงจาก cache ซึ่งจะช้า
ทำให้การใช้ Redis ในการเก็บข้อมูลที่ค่อนข้าง dynamic (เปลี่ยนได้ตลอดเวลา) เป็นวิธีที่เหมาะสมกว่าครับ

กรณีของ assets hash ที่บอกตอนแรก เหตุผลที่ใช้ LRU cache แทน Redis คือ assets hash มันเป็น static
มันจะเปลี่ยนแค่หลัง deploy ซึ่งจำเป็นต้องมีการ restart server ทำให้ในกรณีนี้ memory cache เหมาะสมกว่า

key ของเว็บที่เก็บในตอนนี้ พยายามจะตั้งชื่อให้เป็น module.function:key1=value,key2=value,...
แล้วจะเอา key นี้ไปแปลงเป็น SHA256 ก่อนส่งเข้าสู่ Redis เพื่อให้ขนาดของ key เป็น fixed length
โดยจะเซ็ทให้ expire ทุก 1 ชั่วโมง เพื่อกัน stale cache ครับ ถ้ามีอัพเดทอะไรก็ force expire ทิ้ง
แล้วรอให้มี request ถัดไปเรียกใช้ เพื่อสร้าง cache

ข้อมูลที่เก็บไว้ใน Redis คือจะดึงค่าทุก request ที่มีการใช้งานครับ เพราะเหตุผลเรื่อง expiration ตามที่บอกไว้ข้างต้น
ถ้ามีการแคชค่าที่ได้รับจาก Redis อีกต่อ จะเก็บค่านี้ไว้แค่ภายใน request lifecycle ครับ

ที่จริงมันมีเรื่อง low-level อย่าง locking เวลาสร้าง cache อยู่ด้วย อันนี้ลองอ่าน dogpile.cache น่าจะดีกว่า
https://dogpilecache.sqlalchemy.org/en/latest/

234 Nameless Fanboi Posted ID:BDxKjaTg73

>>233 ขอบคุณครับ

235 Nameless Moderator Posted ID:0

2018/12/23
- เพิ่มความสามารถในการตั้ง banword เฉพาะบอร์ดและกระทู้

236 Nameless Fanboi Posted ID:O6KD5cyhzy

เรวัต