2010-05-01 103 views
10

Ưu điểm và nhược điểm của thời gian chờ kết nối = 0 là gì?Thời gian chờ kết nối và thời gian kết nối

Và việc sử dụng Connection Lifetime = 0 là gì?

ví dụ

(Database=TestDB; 
port=3306; 
Uid=usernameID; 
Pwd=myPassword; 
Server=192.168.10.1; 
Pooling=false; 
Connection Lifetime=0; 
Connection Timeout=0) 

và việc sử dụng các kết nối tổng hợp là gì?

Trả lời

24

Thời gian chờ là thời gian bạn chờ phản hồi từ yêu cầu trước khi bạn từ bỏ. TimeOut = 0 có nghĩa là bạn sẽ tiếp tục đợi kết nối xảy ra mãi mãi. Tốt tôi đoán nếu bạn đang kết nối với một máy chủ thực sự chậm mà nó là bình thường nếu phải mất 12 giờ để trả lời :-). Nói chung là một điều xấu. Bạn muốn đặt một số loại thời gian chờ hợp lý trên một yêu cầu, để bạn có thể nhận ra mục tiêu của bạn là xuống và tiếp tục với cuộc sống của bạn.

Thời gian kết nối = thời gian kết nối tồn tại trước khi bị giết và tạo lại. Tuổi thọ 0 nghĩa là không bao giờ giết và tái tạo. Thông thường không phải là một điều xấu, bởi vì giết chết và tái tạo một kết nối chậm. Thông qua các lỗi khác nhau, kết nối của bạn có thể bị kẹt trong trạng thái không ổn định (như khi giao dịch với các giao dịch 3 chiều lạ) .. nhưng 99% thời gian là tốt để duy trì kết nối suốt đời như vô hạn.

Kết nối tổng hợp là một cách để giải quyết thực tế là việc tạo kết nối rất chậm. Vì vậy, thay vì tạo một kết nối mới cho mọi yêu cầu, thay vào đó có một nhóm nói, 10, các kết nối được tạo trước. Khi bạn cần một, bạn mượn một, sử dụng nó, và trở lại in Bạn có thể điều chỉnh kích thước của hồ bơi để thay đổi cách ứng dụng của bạn hoạt động. Hồ bơi lớn hơn = nhiều kết nối = nhiều chủ đề hơn làm công cụ tại một thời điểm, nhưng điều này cũng có thể áp đảo bất cứ điều gì bạn đang làm.

Tóm tắt:
ConnectionTimeout = 0 là không tốt, làm cho nó hợp lý như 30 giây.
ConnectionLifetime = 0 được phép
Kết nốiPool = tắt bị vô hiệu là xấu, bạn có thể sẽ muốn sử dụng nó.

+0

Tôi có thể biết nếu bạn có bất kỳ ý tưởng nào về cách xuất hiện lỗi này không? 'Không thể kết nối với bất kỳ máy chủ MySQL được chỉ định nào.' – Mark

+0

Máy chủ của bạn không phản hồi. Có thể được xuống, không thể được mở trên cổng bên phải, có thể là một bức tường lửa, vv Cần thêm chi tiết – bwawok

+1

Tôi thích desc tiết hơn của ConnectionLifetime sau đó tài liệu mysql. – Nicholi

7

Tôi biết đây là một chủ đề cũ nhưng tôi nghĩ điều quan trọng là chỉ ra một trường hợp mà bạn có thể muốn vô hiệu hóa Kết nối tổng đài hoặc sử dụng kết nối trọn đời.

Trong một số môi trường (đặc biệt là khi sử dụng Oracle, hoặc ít nhất là trong kinh nghiệm của tôi), ứng dụng web được thiết kế sao cho nó kết nối với cơ sở dữ liệu bằng thông tin xác thực của người dùng so với chuỗi kết nối cố định nằm trong tệp cấu hình của máy chủ. Trong trường hợp này cho phép kết nối tổng hợp sẽ khiến máy chủ tạo một nhóm kết nối cho mỗi người dùng truy cập vào trang web (Xem Pool Fragmentation). Tùy thuộc vào kịch bản này có thể là tốt hay xấu.

Tuy nhiên, kết nối tổng hợp trở thành một vấn đề khi máy chủ cơ sở dữ liệu được cấu hình để tiêu diệt các kết nối cơ sở dữ liệu vượt quá một thời gian nhàn rỗi tối đa do thực tế rằng các máy chủ cơ sở dữ liệu có thể giết chết các kết nối có thể vẫn nằm trong hồ bơi kết nối. Trong trường hợp này, Kết nối trọn đời có thể hữu ích để loại bỏ các kết nối này vì chúng vẫn bị máy chủ đóng.

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