मुझे नोड_सेवे () की अक्षमता से बहुत परेशानी हो रही है। लेकिन क्या नोड मेरी समस्या को बचा सकता है? आखिरकार मैं यह जानने की कोशिश कर रहा हूं।
मैंने 100,000 पुनरावृत्तियों के साथ एक लूप बनाया। मैंने नोड ऑब्जेक्ट को मान्य होने और सही ढंग से सहेजने के लिए नंगे न्यूनतम बनाया। यहाँ नोड सेव कोड है:
$node = new stdClass();
$node->type = "test_page";
node_object_prepare($node);
$node->uid = 1;
$node->title = $node_title;
$node->status = 1;
$node->language = LANGUAGE_NONE;
if($node = node_submit($node)){
node_save($node);
}
यहाँ परिणाम हैं:
100,000 नोड्स को बचाया गया था, प्रत्येक में node_save () का उपयोग किया गया था। इसे पूरा करने में 5196.22 सेकंड का समय लगा। यह केवल 19 एक सेकंड बचाता है।
कम से कम कहने के लिए, यह स्वीकार्य नहीं है, खासकर जब यह व्यक्ति प्रति सेकंड लगभग 1200 व्यक्तिगत सम्मिलित प्रश्न प्राप्त कर रहा है , और इस व्यक्ति को प्रति सेकंड 25,000 आवेषण मिल रहे हैं ।
तो, यहाँ क्या हो रहा है? अड़चन कहां है? क्या यह नोड_सेवे () फ़ंक्शन के साथ है और इसे कैसे डिज़ाइन किया गया है?
क्या यह मेरा हार्डवेयर हो सकता है? मेरा हार्डवेयर एक विकास सर्वर है, इस पर मेरे अलावा कोई नहीं - इंटेल डुअल कोर, 3Ghz, उबंटू 12.04 विथ 16 गिग्स ऑफ रैम।
जबकि लूप मेरा संसाधन उपयोग चलाता है: MySQL 27% CPU, 6M RAM; PHP 22% CPU 2M RAM।
मेरा mysql विन्यास percona विज़ार्ड द्वारा किया गया था ।
माईसिकल का कहना है कि यदि मेरे सीपीयू का उपयोग 70% से कम है तो मेरी समस्या डिस्क बाउंड है । दी, मेरे पास केवल मिल की एक रन डब्लूडी कैवियार 7200 आरपीएम है, लेकिन मुझे इसके साथ 19 से अधिक इंसर्ट मिल रहे हैं, मुझे उम्मीद है!
बहुत पहले नहीं मैंने एक दिन में 30,000 नोड बचाने के बारे में लिखा था । हालांकि, स्पष्ट होने के लिए, इस नोड का किसी भी बाहरी ताकतों से कोई लेना-देना नहीं है। यह विशुद्ध रूप से एक बेंचमार्क है कि कैसे नोड_सेवे () को कॉल की गति को बढ़ाया जाए।
वास्तविक रूप से, मुझे नोड_सेवे का उपयोग करके हर मिनट डेटाबेस में 30,000 आइटम प्राप्त करने की आवश्यकता है। अगर नोड सेव एक विकल्प नहीं है, तो मुझे आश्चर्य होता है कि क्या मैं अपना ड्रूपल एपि फंक्शन "नोड_बैच_सैव ()" या ऐसा कुछ लिख सकता हूं, जो INSERT क्वेरी के साथ थोक आवेषण करने की mysql की क्षमता का लाभ उठाता है । कैसे इस दृष्टिकोण के लिए विचार?