Nâng bao nhiêu pool connect database là phù hợp

1. Max_connection database hiện tại là bao nhiêu?

Giả sử ta sử dụng Database MySQL AWS thuộc dòng db.t2.large (2CPU – 8GB RAM). Để biết số lượng max_connection có 2 cách:

  • Cách 1: Thực hiện truy vấn SHOW GLOBAL VARIABLES LIKE 'max_connections';
  • Cách 2: Dùng công thức max_connections = DBInstanceClassMemory/12582880
    • Ram 8G ⇒ 8000000000 bytes / 12582880 = 635 pools

2. Nâng bao nhiêu pool là hợp lý?

Giả sử ta có 3 con servers. Mỗi server chạy 4 workers. Mỗi worker chạy 16 threads.

Mỗi thread là 1 connection đến database.

Suy ra ta có tổng số threads trên 1 server ⇒ 16 threads * 4 workers = 64 pools/server

Ta có 3 servers ⇒ 64 pools * 3 servers = 192 pools ⇒ Số pool tổng cộng là 192 pools

Cho nên chỉ số max_connection > tổng số pools

Với database ở trên thì sẽ đáp ứng được. Nếu DB của bạn yếu thì các bạn cần phải điều chỉnh lại số lượng threads cho phù hợp. Miễn sao khi tổng các server lại nó phải bé hơn số max_connection

Lưu ý: Đó là ta mới tính cho những server đang golive, ngoài ra còn có những server khác như background chẳng hạn, hoặc khi ứng dụng được Scale-up server thì củng phải được tính vào. Tốt nhất là ta nên chừa số lượng còn lại ít nhất phải được 25 pools (Còn tuỳ vào thực tế server của bạn như thế nào mà tính cho hợp lý)

Nếu server bạn mạnh, bạn dùng nhiều threads thì đồng nghĩa với việc bạn phải nâng Database lên cho phù hợp. Chứ không thể server mạnh mà Database yếu thì không thể đáp ứng được.

0 Shares:
Leave a Reply

Your email address will not be published. Required fields are marked *

You May Also Like
Read More

Sentry for Rails

Table of Contents Hide Đặt vấn đềGiới thiệu SentryConfig Sentry cho Rails appSummary Đặt vấn đề Trong quá…
Read More

What’s new in Ruby 3.3.0

Table of Contents Hide YJITRJITIRBRangeRails Range#overlaps?(range)Ruby < 3.3Ruby 3.3Tham khảo Là một developer có niềm đam mê sâu…