Tôi hiện đang làm việc trên một số thử nghiệm cá nhân và điểm chuẩn để so sánh quy trình làm việc và hiệu quả giữa việc sử dụng MongoDB và MySQL với dữ liệu ví dụ thế giới thực.Mở và đóng 16000 trường hợp Mongo DB trong PHP
Để thiết lập dữ liệu trong mỗi cơ sở dữ liệu, tôi đang thực hiện vài nghìn vòng và tạo ngẫu nhiên các đối tượng dữ liệu để chèn vào cơ sở dữ liệu.
Tuy nhiên tôi đang gặp một số vấn đề khi sử dụng lớp Mongo trong PHP mà tôi không thể giải quyết. Vấn đề là như vậy:
Tôi có một vòng lặp tạo ra một cá thể và kết nối Mongo mới, chèn một mảng nhỏ vào một bộ sưu tập và sau đó đóng kết nối. Vòng lặp này sẽ chạy 20000 lần. Tuy nhiên nó luôn luôn thất bại xung quanh vòng 16300nd (với một phút 16200 và tối đa 16350 tôi muốn nói sau một vài lần chạy) khi nó cố gắng tạo ra cá thể/tạo kết nối.
Mã trong vòng lặp là dưới đây:
$data = get_random_user_data();
$mongo = new Mongo('mongodb://admin:[email protected]:27017/test');
if ($mongo->test->users->insert($data)) {
$users[] = array('id' => $data['_id'], 'name' => $data['username']);
echo $i." - Added user: ".$data['username'].'<br/>';
}
$mongo->close();
get_random_user_data() chỉ trả về một mảng kết hợp đơn giản.
Các lỗi tôi nhận được là:
Fatal error: Uncaught exception 'MongoConnectionException' with message 'Unknown error'
Trên dòng:
$mongo = new Mongo('mongodb://admin:[email protected]:27017/test');
Bất kỳ ý tưởng? Có điều gì đó cơ bản tôi đang thiếu như một số bảo mật hoặc phòng chống spam?
Xin cảm ơn trước.
thêm thông tin:
Các kịch bản chết vào khoảng 114,9797 giây. Nó không phải là một bộ nhớ PHP hoặc thời gian dựa trên vấn đề như tất cả các giới hạn được nâng lên và tôi chạy tiêu chuẩn MySQL của tôi ngày hôm qua chèn 120000 hàng (với cùng một phương pháp looping mở kết nối, chèn, đóng kết nối) trong khoảng một giờ không có vấn đề.
Chạy PHP Version 5.3.5
phpinfo thông tin Mongo:
MongoDB Support enabled
Version 1.2.0-
Directive Local Value Master Value
mongo.allow_empty_keys 0 0
mongo.allow_persistent 1 1
mongo.auto_reconnect 1 1
mongo.chunk_size 262144 262144
mongo.cmd $ $
mongo.default_host localhost localhost
mongo.default_port 27017 27017
mongo.long_as_object 0 0
mongo.native_long 0 0
mongo.no_id 0 0
mongo.utf8 1 1
Hmm, thú vị. Bạn có thể tái sử dụng kết nối không? Có lẽ đó là một điều cho mỗi quá trình? Điều gì sẽ xảy ra nếu bạn thử cùng một thứ trong, ví dụ, Python? Bạn đã grepped nguồn MongoDB (và/hoặc trình điều khiển PHP) cho 'Unknown error'? Nếu bạn ngủ một chút giữa các kết nối thì sao? – Cameron
Không thể thực sự tái sử dụng kết nối vì đó là một điều tôi muốn đưa vào điểm chuẩn. Tại thời điểm nhận xét này, ai đó đã nói rằng họ gặp vấn đề tương tự với trình điều khiển Ruby của họ. Không nhìn vào nguồn gốc, nhưng tôi sẽ có cơ hội. Cảm ơn vi đa trả lơi. :) – Chrisui
Vâng, tôi hiểu về điểm chuẩn, tôi chỉ tự hỏi nếu đó là nhiều kết nối đang gây ra vấn đề (có vẻ như câu trả lời của Ramesh) – Cameron