2011-12-31 45 views
14

Tôi đang cố gắng thiết lập thiết lập hiệu suất lý tưởng cho MySQL và tài nguyên cần thiết trên một máy chủ chia sẻ.Max_connections thực sự có ý nghĩa gì?

Câu hỏi của tôi là, max_connections thực sự có ý nghĩa gì?

Đây có phải là số yêu cầu đồng thời duy nhất được thực hiện cho máy chủ không? Vì vậy, nếu có hai người sử dụng, 1 với 1 tab mở và khác với 4 tab mở ... và cả hai nhấn tất cả các tab của họ để tải lại cùng một lúc, sẽ có 5 kết nối được thực hiện cho MySQL DB? Do đó, nếu chúng ta gặp phải trường hợp này: 10 người có 2 tab và 31 người có một tab, hãy nhấn làm mới cùng một lúc ... với số max_connections ở mức 50, mọi người sẽ bị khóa không?

Lý do tôi hỏi là vì tôi muốn bắn cho thấp max_connections phải thận trọng với tài nguyên bộ nhớ kể từ khi tôi liên tục xem trang web sẽ chuyển sang chế độ điều tiết CPU

Cảm ơn bạn đã giúp đỡ của bạn

Trả lời

13

Có, có là một kết nối riêng được mở cho mỗi trang. Tuy nhiên, giả sử bạn không làm bất cứ điều gì chuyên sâu về cơ sở dữ liệu, kết nối sẽ tồn tại trong thời gian ngắn và tự đóng lại khi trang đã được phục vụ cho khách hàng.

Nếu bạn vượt quá số lượng kết nối tối đa, mọi nỗ lực kết nối tiếp theo sẽ không thành công.

+2

Có một giới hạn để thiết lập giá trị của 'max_connections'? Điều gì xảy ra nếu tôi đặt 200.000 ví dụ hoặc thậm chí nhiều hơn? – antf

+1

Mỗi kết nối sử dụng bộ nhớ cả trong hệ điều hành và trong quá trình máy chủ. Cuối cùng, bạn sẽ đạt đến giới hạn số lượng kết nối tối đa mà hộp của bạn có thể xử lý. Điều này khá cũ, nhưng vấn đề [C10K] (http://www.kegel.com/c10k.html) đưa ra ý tưởng về một số vấn đề nếu các vấn đề phải đối mặt với một số lượng lớn các kết nối tới một máy chủ đơn lẻ. –

15

Số lượng kết nối được phép được kiểm soát bởi biến hệ thống max_connections. Giá trị mặc định là 151 để cải thiện hiệu suất khi MySQL được sử dụng với máy chủ Web Apache. (Trước đây, mặc định là 100.) Nếu bạn cần hỗ trợ nhiều kết nối hơn, bạn nên đặt giá trị lớn hơn cho biến này.

mysqld thực sự cho phép max_connections + 1 khách hàng kết nối. Kết nối bổ sung được dành riêng để sử dụng bởi các tài khoản có đặc quyền SUPER. Bằng cách cấp đặc quyền SUPER cho quản trị viên và không cho người dùng bình thường (người không cần nó), quản trị viên có thể kết nối với máy chủ và sử dụng SHOW PROCESSLIST để chẩn đoán sự cố ngay cả khi số lượng khách hàng không đủ điều kiện tối đa được kết nối. Xem Phần 12.7.5.30, “Cú pháp PROWESSLIST SHOW”. Số lượng kết nối tối đa mà MySQL có thể hỗ trợ phụ thuộc vào chất lượng của thư viện luồng trên một nền tảng nhất định, dung lượng RAM có sẵn, lượng RAM được sử dụng cho mỗi kết nối, khối lượng công việc từ mỗi kết nối và phản hồi mong muốn thời gian. Linux hoặc Solaris có thể hỗ trợ 500 đến 1000 kết nối đồng thời một cách thường xuyên và có tới 10.000 kết nối nếu bạn có nhiều gigabyte bộ nhớ RAM và khối lượng công việc từ mỗi bộ nhớ thấp hoặc mục tiêu thời gian đáp ứng không được đáp ứng. Windows bị giới hạn (các bảng mở × 2 + các kết nối mở) < 2048 do lớp tương thích Posix được sử dụng trên nền tảng đó.

Có thể cần tăng giới hạn tệp mở. Xem thêm Phần 2.5, “Cài đặt MySQL trên Linux”, để biết cách nâng cao giới hạn của hệ điều hành về việc có bao nhiêu xử lý có thể được MySQL sử dụng.

Từ: MySQL 5.6 Reference Manual:: C.5.2.7 Too many connections

Các vấn đề liên quan