2012-02-20 34 views
5

Điều này đang giết chết tôi. Chúng tôi có một ứng dụng ASP.NET/Mono trên cơ sở dữ liệu MySQL. Trong nhiều tháng, chúng tôi đã bị cản trở bởi sự xuất hiện hoàn toàn ngẫu nhiên nhưng nhất quán của "Không thể kết nối với bất kỳ máy chủ MySQL được chỉ định nào". Tôi không có nghĩa là một chuyên gia MySQL, và tôi hy vọng đây là một cái gì đó ngớ ngẩn.MySql * hoàn toàn ngẫu nhiên * Không thể kết nối với bất kỳ máy chủ MySQL nào được chỉ định

chi tiết cụ thể:
MySQL 5.5.17
MySQL Connector/Net 6.4.4
Mono 2.10.8
MonoDevelop 2.8.6.5

kết nối chuỗi: MÁY CHỦ = localhost, 3306; DATABASE = xxx ; UID = xxx; PWD = xxx; CONNECTION TIMEOUT = 90; Mã hóa = sai;

Max_connections được đặt thành 150. Không bao giờ có hơn 5 kết nối và tất cả đều đang hoạt động (có thể do tính năng tổng hợp).

  • Ứng dụng này là C# ASP.NET 3.5. Chạy rắn như một tảng đá trong nhiều năm trên Windows/IIS. Chín tháng trước, thị trường của chúng tôi đã dẫn chúng tôi ra khỏi Windows, vì vậy chúng tôi (dễ dàng tôi có thể thêm) đã chuyển toàn bộ thứ đó sang Mono/Apache.

  • Sự cố chỉ xảy ra ở phía Mono, nhưng điều đó rất quan trọng vì chúng tôi đã ngừng hỗ trợ Windows của mình.

  • Xảy ra trung bình khoảng 10 lần một giờ, nhưng khoảng cách thay đổi rất nhiều.

  • Vấn đề này đã được chứng kiến ​​trong các cấu hình sau:

Ubuntu 11/Apache2/mod_mono
OSX Lion/Apacke2/mod_mono
Ubuntu 11/xsp2/MonoDevelop debug máy chủ
OSX Lion/xsp2/MonoDevelop máy chủ gỡ lỗi

  • Đã gây rối với keepaliv e, wait_timeout, connectionreset, v.v. không có kết quả. Thời gian dường như không có hiệu lực. Lỗi là tức thời trên conn.open - không phải sau khi hết thời gian kết nối.

  • Đây là đầu mối - ứng dụng hoàn toàn sẽ không chạy cùng với Pooling = false. Gần như mọi nỗ lực kết nối đều thất bại. Tất nhiên tôi muốn tập hợp vào, nhưng tôi không chắc tại sao nó không hoạt động nếu không có.

  • Ứng dụng có tích hợp "nhịp tim" (phiên của người dùng trong cơ sở dữ liệu) - cứ 2 phút một lần.

  • Sự bực mình nhất của tất cả? Nó hoàn toàn không thể được sao chép theo yêu cầu trong môi trường đang chạy - đó là ngẫu nhiên. Tôi đã kiểm tra kích thước truy vấn, thời gian thực hiện, v.v.

  • Trong chính xác một trường hợp, tôi có thể thực hiện điều này: Khởi động ban đầu của máy chủ Ubuntu hoặc OSX, lần đầu tiên Mono tạo kết nối đầu tiên với MySQL - sẽ xảy ra sau đó. Sau đó, mọi người đều đoán.

+0

Giới hạn về giới hạn max_connections như thế nào? Bạn có thể đạt mức tối đa cho phép tại các thời điểm khác nhau. –

+0

Có vẻ như không chắc chắn rằng điều đó xảy ra trên kết nối đầu tiên – DNA

+0

+1 cho một câu hỏi hay, nhưng tôi nghĩ rằng nó sẽ tốt hơn trên serverfault.com –

Trả lời

0

Ok, điều này là cũ, nhưng tôi đã mất rất nhiều thời gian về vấn đề này, tôi đã chia sẻ này cuộc sống tiết kiệm bài viết cuối cùng tôi tìm thấy: Getting Mono and Mysql to play nice together

Và tôi tổng hợp đối với trường hợp các liên kết kết thúc trong 404 một ngày nào đó: MỌI biến của chuỗi kết nối PHẢI được xác định. Vì vậy, có, bao gồm cổng, mà tôi không bao giờ phải xác định trong một chuỗi kết nối bao giờ trong cuộc sống của tôi trước đây.

Đối với tôi, giải pháp khắc phục được sự cố.

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