Giới hạn kết nối AWS RDS


45

Máy chủ RDS có tới 40 kết nối tối đa, như trong tài liệu sau đây
tôi đang sử dụng Magento 1.9, và tại một số điểm, tôi đạt đến số tối đa sau đó trang web không còn hoạt động.
Bạn có bất kỳ cách được đề nghị để giải quyết vấn đề này?

Theo hiểu biết của tôi, nếu tôi có 2 máy chủ web kết nối với máy chủ RDS .. thì tôi nên có 2 kết nối RDS, không nhiều hơn.


2
"Theo hiểu biết của tôi, nếu tôi có 2 máy chủ web kết nối với máy chủ RDS .. thì tôi nên có 2 kết nối RDS, không nhiều hơn." Đó là một cách hiểu không chính xác. Đó thường là 1 kết nối cho mỗi tiến trình công nhân hoặc luồng.
Michael - sqlbot

Cảm ơn @ Michael-sqlbot .. Có tôi hiểu nhầm điều này, nhưng tôi muốn chắc chắn. Nhưng, tại sao khi chúng tôi có 40 kết nối đến RDS, nó sẽ từ chối kết nối khác và không thể truy cập được cho đến khi các kết nối khác bị đóng?
Alaa Badran

Đó là theo thiết kế, từ max_connectionstham số. Đối với hầu hết các khối lượng công việc, bạn sẽ có thể tăng nó một cách an toàn, bởi vì đó là giá trị mặc định bảo thủ an toàn ... nhưng bạn sẽ muốn điều tra nguyên nhân của những đột biến đó.
Michael - sqlbot

Câu trả lời:


65

Biến giới hạn max_connections của AWS RDS dựa trên loại Instance, vì vậy bạn có thể nâng cấp RDS của mình hoặc tạo thêm bản sao.

Các loại RDS với giới hạn max_connections:

  • t2.micro 66
  • t2.small 150
  • m3.medium 296
  • t2.medium 312
  • m3.lund 609
  • t2. 648
  • m4.lund 648
  • m3.xlớn 1237
  • r3.lund 1258
  • m4.xlund 1320
  • m2.xlớn 1412
  • m3.2xlund 2492
  • r3.xlund 2540

Giới thiệu bởi max_connections tại AWS RDS Kích thước sơ thẩm MySQL 2015

Cập nhật 2017-07

Cài đặt max_connections RDS hiện tại được mặc định bởi {DBInstanceClassMemory/12582880}, nếu bạn sử dụng t2.micro với RAM 512MB, thì max_connections có thể là (512 * 1024 * 1024) / 12582880 ~ = 40, v.v.


Mỗi máy chủ Web có thể có nhiều kết nối đến RDS, tùy thuộc vào yêu cầu SQL của bạn từ máy chủ Web.


Tôi biết điều này, nhưng khi đạt tới 40 kết nối, máy chủ không phản hồi? Kiểm tra điều này: drive.google.com/file/d/0B-_uggt0MBYOZElEMEItWDIwUEk/ gợi
Alaa Badran

1
Tôi kiểm tra các nhóm tham số RDS, max_connections được mặc định theo {DBInstanceClassMemory/12582880}, vì vậy khi bạn sử dụng t2.micro với RAM 512MB, các max_connections có (512*1024*1024)/12582880 = 40.69thể giải thích 40 kết nối tối đa của bạn.
Nick Tsai

2
Bạn có thể kiểm tra giá trị bằng cách truy vấn RDS MySQL đó bằng lệnh show variables like 'max_connections';.
Nick Tsai

1
Bạn có thể tạo một cái mới parameter groupvà thay đổi giá trị của max_connections giá trị bạn muốn. Đây sẽ là giới hạn kết nối mới cho phiên bản RDS của bạn.
dấu gạch chéo ngược

1
Câu trả lời này có trong năm 2019. Bạn luôn có thể tự kiểm tra bằng cách thực hiệnSHOW VARIABLES WHERE Variable_name='max_connections'
Dave Stein

30

Bạn có thể thay đổi max_connectionsgiá trị bằng cách cập nhật chính sách tham số mặc định hoặc tạo chính sách mới - tôi khuyên bạn nên đi với chính sách sau.

  • Chuyển đến RDS
  • Nhóm tham số
  • Tạo một nhóm tham số mới (AWS sẽ để mọi thứ như mặc định)
  • tìm kiếm max_connectionsgiá trị
  • Thay đổi giá trị sử dụng
  • Đi đến ví dụ RDS và sửa đổi
  • Chọn nhóm Tham số mới được tạo và khởi động lại phiên bản hoặc để AWS khởi động lại nó trong cửa sổ bảo trì tiếp theo

Hi vọng điêu nay co ich!


2
<3 đây phải là câu trả lời được chấp nhận
bbozo

2
mặc dù tôi đã đặt max_connections thành 1000, rds vẫn chỉ cho phép 100 kết nối tối đa trên một cá thể vi mô
Miguel Mota

1

Trong khi tăng các kết nối tối đa trên cấu hình máy chủ có thể khắc phục sự cố, bạn nên xem xét việc xác minh cấu hình và triển khai ứng dụng của mình.

Tôi không phải là chuyên gia về Magento, nhưng vì gần đây tôi có một vấn đề tương tự đối với một dự án mà tôi đang thực hiện, tôi nhận thấy rằng việc triển khai mặc định của khung mà tôi đang sử dụng đã tạo ra một kết nối với mọi cuộc gọi đến cơ sở dữ liệu.

Mặc dù điều đó có thể không gây ra bất kỳ vấn đề nào đối với một số người, thời điểm bạn có nhiều khách truy cập hoặc một số tác vụ cần nhiều cơ sở dữ liệu và có thể chạy trên nhiều kết nối, cách tốt nhất để ngăn chặn sự cố máy chủ với lỗi "QUÁ NHIỀU KẾT NỐI" là triển khai cơ sở dữ liệu hồ bơi kết nối.

Điều này ngăn ứng dụng tạo thêm kết nối mà máy chủ có thể xử lý và không làm hỏng ứng dụng cho người dùng. Nhóm kết nối sẽ giữ một hàng đợi cho các yêu cầu truy cập cơ sở dữ liệu cho đến khi có kết nối để nó có thể tiến hành xử lý yêu cầu của người dùng.

Chỉ cần lưu ý rằng nhóm kết nối phải là luồng an toàn trong kịch bản đa luồng.


1

Đăng nhập vào ví dụ RDS của bạn (sử dụng máy khách MySQL) và chạy truy vấn sau:

SHOW VARIABLES LIKE 'max_connections';

1

Thông tin thực tế cho các trường hợp t3 Postgresql (nhóm tham số default.postgres10):

  • db.t3.micro - 112 max_connections
  • db.t3.small - 225 max_connections
  • db.t3.medium - 450 max_connections
  • db.t3.lund - 901 max_connections
  • db.t3.xlarge - 1802 max_connections
  • db.t3.2xlarge - 3604 max_connections

Nó tương tự cho default.postgres9 và default.postgres11


0

Đó không phải là tối đa 40 kết nối, đó là tối đa 40 trường hợp RDS. Bạn rất có thể chỉ sử dụng 1 ví dụ dựa trên mô tả của bạn.

Bạn có thể có hàng ngàn kết nối đến máy chủ RDS vì mỗi lần mở phiên với cơ sở dữ liệu sẽ tạo ra kết nối mới. Có lẽ bạn đang chạy vào các ràng buộc về hiệu năng và nên xem xét làm cho đối tượng RDS lớn hơn.


Cảm ơn @jason Tôi có thông tin sau: Khi đạt 40 kết nối, RDS không phản hồi cho đến khi các kết nối khác đóng lại. Chúng tôi có ví dụ RDS. Dưới đây là ảnh chụp màn hình này: drive.google.com/file/d/0B-_uggt0MBYOZElEMEItWDIwUEk/ợi Chúng tôi có CPU nhàn rỗi với số lượng kết nối cao
Alaa Badran 17/07/17

Đây là kết nối, không phải thứ khác
Orlando
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.