2011-11-22 40 views
11

Tôi có hai máy chủ, cả hai đều chạy CentOS 5.7 và cPanel-CURRENT. Một là x86 và cái còn lại là x64. Cả hai đều đang sử dụng Apache 2.2.21, PHP 5.3.8 và MySQL 5.1.PHP: Các kết nối MySQL từ xa rất chậm

Nếu tôi truy vấn cơ sở dữ liệu cục bộ trên bất kỳ máy chủ nào trong số các máy chủ, kết quả sẽ được trả về ngay lập tức. Trong trường hợp này một vài nghìn kết quả đang được trả về. Tuy nhiên, chạy cùng một truy vấn từ máy chủ này đến máy chủ khác và truy vấn mất 10+ giây để hoàn tất.

Nếu tôi sử dụng MySQL Workbench 5.2 để truy vấn cơ sở dữ liệu từ trạm làm việc của tôi với cùng một truy vấn, nó hoàn thành trong chưa đầy một giây, điều đó khiến tôi nghĩ rằng có vấn đề với PHP hoặc liên quan đến máy chủ khác.

Có ai khác đã gặp sự cố này trước đây và biết cách giải quyết vấn đề này không? Mọi sự trợ giúp sẽ rất được trân trọng.

+0

thử mysql_pconnect() http://www.php.net/manual/en/function.mysql-pconnect.php mayb nó sẽ giúp – YamahaSY

+0

Sử dụng kết nối liên tục không giúp được gì. Truy vấn vẫn mất cùng một thời gian để hoàn thành. – Reado

+0

Có thể cơ sở dữ liệu của bạn khác một chút không? Ví dụ. không phải tất cả các chỉ mục trên máy cục bộ đều tồn tại trên máy chủ từ xa. Php làm việc tốt với máy chủ mysql từ xa, có thể có một số vấn đề khác. Điều gì về kết nối mạng? Máy chủ từ xa 'Ping'. – Oroboros102

Trả lời

11

Dự đoán đầu tiên: có thể là sự cố DNS và bạn có thể sử dụng tùy chọn --skip-name-resolve trong my.cnf hoặc bạn chỉ có thể sử dụng địa chỉ IP trong bảng trợ cấp MySQL.

Dự đoán thứ hai: có thể là vấn đề với cấp độ bảo mật và tôi đề nghị tạm thời tắt selinux hoặc tường lửa và chạy lại kiểm tra.

+0

Tôi đang sử dụng địa chỉ IP để kết nối với máy chủ từ xa trong cả PHP và MySQL Workbench. Ngoài ra, "--skip-name-resolve" nằm trong tệp cấu hình và máy chủ đã được khởi động lại. Cuối cùng selinux bị vô hiệu hóa (một trong những yêu cầu để chạy cPanel) và tôi đã thử vô hiệu hóa tường lửa nhưng không có kết quả. – Reado

+0

và bạn nhận thấy bất kỳ cải tiến nào? Bạn có thể cho tôi biết số lượng thời gian mà hàm kết nối có. Tôi tự hỏi những gì chính xác là tốn thời gian mà không thực sự rõ ràng từ câu hỏi của bạn. –

+3

Trong tệp cấu hình, nó phải là "bỏ qua tên-giải quyết" không "--skip-name-resolve" - ​​dấu gạch ngang trước chỉ khi nó được sử dụng làm tham số khi bạn khởi động dịch vụ mysqld. –

4

Tôi gặp sự cố chính xác này với ứng dụng PHP/MySQL.

Chỉ muốn chia sẻ việc thêm "giải quyết tên bỏ qua" vào my.ini đã sửa nó cho tôi. Tôi đã được một chút bối rối bởi điều này kể từ khi ứng dụng của tôi trên máy tính để bàn 1 đã truy cập máy tính để bàn 2 (mysql) bằng cách sử dụng địa chỉ IP. Tôi đang đi giữa hai máy tính để bàn Windows 7.

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