Tổng cộng là 22 workers !
Oki ! Mình có 2 môi trường
VPS ( Hostvn )
- 2 Cores
- 2GB RAM
- Cache & Queues trên Redis
- Mongodb xài Atlas
- MySQL local
- 12 workers
VMWare trên Alienware
- 2 processors x 4 cores
- 8GB RAM
- Cache trên Redis
- Queues trên MySQL ( Vì sao mình sẽ giải thích sau )
- Mongodb local
- MySQL local
- 22 workers
Gần 20 ngày chạy trên VPS data cứ cảm giác bị thiếu thiếu
Lượng data có được quá chậm, quá ít. 2 ngày chỉ có được khoảng 300-400 films.
Khá khó để kiểm chứng, đối chiếu. 1 phần do không có UI ( Redis )
Vậy câu chuyện vui là gì
Thật sự mình không rõ vì sao. Tự nhiên mất tiền mà không được gì ( con VPS & thêm 1 CPU ~ 500k / tháng ).
Nên setup thử trên con Alienware laptop ở nhà để đối chiếu. Sử dụng MySQL làm queues vì có phpmyadmin để kiểm tra jobs. Cái này do hạn hẹp kiến thức chỉ biết làm cách này. Còn Queues trên Redis thì … ngu luôn.

- Số lượng job sinh ra quá lớn !. Mới chỉ có ~ 1-2 hours mà đã gần 100k job.
- Nên dĩ nhiên trên VPS workers không kham kịp là điều dễ hiểu.
Ah tiện thể bài toán xử lý deadline Queues trên database tham khảo ở đây nhe
https://ph4r05.deadcode.me/blog/2017/12/23/laravel-queues-optimization.html
Oki ! Như vậy về cơ bản code đã ok. Chẳng qua do jobs nhiều quá thôi. Mới init thì nhiều là đúng ( và tốt ) rồi.
Vậy có thể an tâm chuyển jobs về Redis ( performance ).
Ah tất nhiên con Mongodb nhớ đánh Index … ! Vì flickr_photos table ( collection ) này có ít nhất cũng vài M records lận. Không đánh index là Mongo chạy 100% luôn. Rút kinh nghiệm khi ban đầu xài Mongodb trên VPS luôn.
Như vậy con XGallery này khi triển khai hoàn chỉnh thiết nghĩ sẽ tạm có mô hình sau
- Khoảng 30 workers
- Chắc cần chia nhỏ workers ra các queues khác để mọi thứ song song hơn
- 1 con VPS độc lập
- Mongo chắc vẫn sẽ chọn Atlas. Tuy nhiên FREE thì chỉ được max database 500MB. Quá nhỏ
- MySQL 1 con server riêng nho nhỏ thôi vì thật ra connections k quá cao.
- 1 con VPS nhỏ làm redis server để cache. Việc này khá cần vì nếu không dễ tạo flood trên target. Hoặc file cache cũng được. Cái này không quá gây ảnh hưởng performance
- Queues sử dụng redis cho performance tốt hơn. Do đó 1 con Queue server riêng. Chưa thử xài Amazon.
Leave a Reply