एक दिन में 10 मिलियन अनुरोधों और mySQL प्रश्नों को संभालने के लिए मुझे किस तरह के सर्वर की आवश्यकता है? [बन्द है]


23

मैं सर्वर प्रशासन का नौसिखिया हूं और मैं अपनी नई वेबसाइट की मेजबानी के लिए एक शक्तिशाली होस्टिंग सेवा की तलाश कर रहा हूं। यह वेबसाइट मूल रूप से एक मोबाइल ऑनलाइन गेम का बैक-एंड है, और यह होगा:

  • एक दिन में 10 मिलियन तक HTTPS रिक्वेस्ट और mySQL क्वेरीज़ को हैंडल करें
  • हार्ड डिस्क पर 2000 जीबी तक का स्टोर
  • प्रति माह और बाहर शायद 5000 जीबी डेटा स्थानांतरित करें
  • यह PHP और mySQL पर चलता है
  • MySQL डेटाबेस में 10 मिलियन रिकॉर्ड हैं, प्रत्येक रिकॉर्ड के लिए 5-10 फ़ील्ड हैं, प्रत्येक 100 बाइट्स के आसपास

मैं वास्तव में नहीं जानता कि इन आवश्यकताओं को संभालने के लिए मुझे किस तरह के सर्वर की आवश्यकता है, मेरा प्रश्न है:

  1. एक समर्पित सर्वर या वीपीएस के लिए मुझे सीपीयू / रैम की क्या आवश्यकता है?
  2. कौन सी होस्टिंग कंपनियां इस तरह के समर्पित सर्वर या वीपीएस की पेशकश करने में सक्षम हैं?
  3. क्लाउड कंप्यूटिंग के बारे में क्या? मैंने Amazon EC2 पर शोध किया है लेकिन यह मुझे जटिल लगता है। और मैंने रैकस्पेस से संपर्क किया है, लेकिन अजीब तरह से उन्होंने कहा कि क्लाउडसइट्स मेरी आवश्यकताओं के लिए उपयुक्त नहीं है। मुझे आश्चर्य है कि क्या कोई अन्य क्लाउड होस्टिंग कंपनी है।
  4. कोई अन्य वैकल्पिक विधि?

हम इसे 8 लिनक्स के साथ 2 लिनक्स सर्वरों के साथ मिला है, mysql एक mysql क्लस्टर है और DB को मेमोरी में तेजी से संग्रहीत किया जाता है, सीपीयू कभी भी बहुत अधिक नहीं होता है यदि आप एक अच्छे डिस्ट्रो का उपयोग करते हैं, और डिस्क का केवल उपयोग करने की आवश्यकता होगी प्रति घंटा स्नैपशॉट लेने में विफलता के मामले में आपको अतिरेक मिलता है। तुम भी mysqltuner स्थापित करना चाहते हो सकता है ताकि आप अनुक्रमणिका आदि पर नज़र रख सकें और हर चीज़ का सबसे अच्छा उपयोग कर सकें और बहुत सारे अनुक्रमणिका भी जोड़ सकें और धीमी क्वेरी पर लॉग रख सकें, क्योंकि वेब के लिए यह वास्तव में सस्ता हो सकता है बस लोड जोड़ें यातायात को विभाजित करने के लिए मोर्चे पर बैलेंसर
माइनस 4

क्लाउड सेवा का उपयोग क्यों नहीं किया जाता है? Azure, Amazon, RackSpace, GoGrid, Heroku?
bbqchickenrobot

जवाबों:


33

एक सस्ता डेस्कटॉप?

चलो गणित में।

  • 10 मिलियन अनुरोध।
  • यह प्रति घंटे 416667 अनुरोधों को तोड़ता है।
  • वह प्रति मिनट 6944 अनुरोधों को तोड़ता है।
  • यह प्रति सेकंड 116 अनुरोधों को तोड़ता है।

डबल (पीक लोड) और हम लोड की बात करते हैं एक सस्ता क्वाड कोर डेस्कटॉप आईएफ को संभाल सकता है यदि प्रश्न काफी सरल हैं, और आप वास्तव में यह नहीं कहते हैं कि वे कितने जटिल हैं।

  • प्रति माह 5000 जीबी तुच्छ है - गंभीरता से, एक ही गणित लागू होता है।
  • जो कि 208GB / दिन तक टूट जाती है
  • जो टूटकर 8GB / घंटा हो जाता है
  • वह 148MB / मिनट तक टूट जाता है
  • यह टूटकर 2,5MB / सेकंड, 25Mbit हो जाता है। चोटी के लिए डबल - 50Mbit, किसी भी होस्टिंग केंद्र के लिए तुच्छ। हालांकि आप खर्च होंगे।

  • हार्ड डिस्क पर 2000 जीबी स्टोर करें। कि एक RAID में 2x2000 GB हार्ड डिस्क है? जब तक: यह डेटाबेस के लिए है, इसमें बहुत से जटिल IO हैं, तो यह कुछ दर्जन डिस्क और 73GB 15.000RPM SAS के बीच बहुत कुछ है RAID 10 (लगभग 60 डिस्क) में I / O की आवश्यकता है - डेटा एक्सेस पैटर्न पर अधिक जानकारी के बिना सवाल जवाब देने योग्य नहीं है।

  • PHP और MySQL चलाता है - मेरा मोबाइल फोन ऐसा कर सकता है;) सवाल यह है कि आवेदन कितना जटिल है। MySQL MAY या MAY यहां स्वीकार्य समाधान नहीं है, BTW एल। - इसके लिए अधिक परीक्षण की आवश्यकता होगी। एक कारण है कि कुछ लोग अभी भी अन्य बड़े व्यावसायिक डेटाबेस का उपयोग करते हैं।

  • एक समर्पित सर्वर या वीपीएस के लिए मुझे सीपीयू / राम की क्या आवश्यकता है?

कोई कहेगा कि तर्क पर निर्भर करता है (PHP भाग में कितनी गणना, स्मार्टनेस या प्रोग्रामर की कमी और बहुत सारे अन्य प्रश्न हैं।

गंभीरता से, यह एक गैर तुच्छ सेटअप है। कुछ विशेषज्ञ इस पर ध्यान दें।

मूल रूप से आपको नीचे उतरने और अपना होमवर्क करने की आवश्यकता है। बहुत सारे प्रश्न इस रूप में उत्तर देने योग्य नहीं हैं। खासकर क्योंकि आप अपने डेटा की परवाह नहीं करते ...

  • बैकअप?
  • आकस्मिक योजना नहीं? मेरा मतलब है, सर्वर मर जाते हैं - इसलिए आप साइट को दिनों के लिए नीचे रख रहे हैं, जबकि प्रतिस्थापन कॉन्फ़िगर किया गया है?

आपके जवाब के लिए धन्यवाद। php सरल है, मुझे लगता है कि मुख्य बोझ mySQL पर है, मैंने विंडोज पर WAMP के साथ अपने लैपटॉप (Core2 Duo) पर कुछ mySQL प्रश्नों का परीक्षण किया। MySQL में 10 mllions रिकॉर्ड के साथ, औसतन प्रत्येक क्वेरी की लागत 0.1 सेकंड है। MySQL प्रश्नों को संभालने में क्वाड कोर के साथ कितना मजबूत होगा?
केल्विन

2
क्वाड कोर को भूल जाओ। IO में आपका लैपटॉप SUCKS - और IO वह जगह है जहां डेटाबेस lmimited किया जाता है। आपके पास एक हार्ड डिस्क है, जो कि धीमी है और ROBUST (latop) है। सर्वर MULTIPLE हार्ड डिस्क का उपयोग करते हैं जो FAST (लेकिन मजबूत नहीं) हैं। मैं एक क्वाड कोर एसक्यूएल सर्वर फ्रॉन एमएस का उपयोग करता हूं और सीपीयू को अधिकतम किए बिना 500 से अधिक बैचों को सरल चयनों (एक बैच में एक का चयन) पर संभाल सकता हूं - लेकिन मुझे एक डिस्क सबसिस्टम पर बहुत सी डिस्क गतिविधि मिलती है जो संभवतः है 30 से अधिक बार तुम्हारा जितना तेज (और वह अभी तक प्रभावशाली नहीं है)। डिस्क सीमा है। साथ ही उचित प्रोग्रामिंग।
टॉमटॉम

1
आपके ssl ट्रैफिक को एन्क्रिप्ट / डिक्रिप्ट करने की आवश्यकता होगी, आप एक बैलेंसर पर लोड करना बंद कर सकते हैं, और सामान्य HTTP सर्वर पर एक रिवर्स प्रॉक्सी कर सकते हैं। यह विलंबता को नीचे रखना चाहिए। यदि आप अपने हार्डवेयर में एन्क्रिप्शन भी कर सकते हैं ....... en.wikipedia.org/wiki/SSL_acceleration अगर बजट आपके डेटाबेस ramsan.com/success/ccpgames.htm का
यूनिक्स Janitor

7

मेरे कुछ अनुभव जोड़ने के लिए जो सहायक हो सकते हैं:

  • जैसा कि टॉमटॉम ने उल्लेख किया है कि सटीक विनिर्देशों को देना मुश्किल / असंभव है क्योंकि यह बहुत कुछ आपके आवेदन के डिजाइन और कार्यान्वयन पर निर्भर करता है। हार्डवेयर जो मुझे या किसी और को एक्स अनुरोध / सेकंड देता है वह आपके लिए अच्छा काम नहीं कर सकता है।
  • मेरे पास कम अंत समर्पित MySQL सर्वर (Intel Core2 Duo E4600 2.40 GHz, 4 GB RAM) है, जो 90% CPU दर के साथ 100 अनुरोधों / सेकंड (लगभग 10 मिलियन / दिन) की औसत सेवा प्रदान करता है। कॉन्फ़िगरेशन के कुछ मूल ट्विक्स के अलावा यह भारी (+ 95% रीड) पढ़ने के कारण अच्छी तरह से चल रहा है और सक्रिय रिकॉर्ड सेट आसानी से मेमोरी में समाहित है। सर्वर रैम की मात्रा का चयन करते समय अपने सक्रिय सेट के आकार पर विचार करें क्योंकि यह एक बड़ा अंतर ला सकता है। सुनिश्चित करें कि आप अपने डेटाबेस आकार और सक्रिय रिकॉर्ड सेट आकार के बीच अंतर को समझते हैं। उदाहरण के लिए, मेरा डेटाबेस कुल ~ 7GB है, लेकिन सक्रिय सेट केवल कुछ 100MB है।
  • इसी तरह, मेरे पास प्रतिदिन ~ 1 मिलियन अनुरोधों वाले समान स्पेक्स का अपाचे सर्वर है जिसकी औसत ~ 95% CPU निष्क्रिय दर है। अनुरोध बहुत ही सरल मानचित्र डेटा AJAX प्रश्नों और अधिक जटिल MediaWiki पृष्ठों का मिश्रण हैं।
  • अपने विशिष्ट एप्लिकेशन को बेंचमार्किंग करना यह निर्धारित करने की कोशिश में एक अच्छी शुरुआत है कि आपको क्या चाहिए। आप अनुमान के तहत नहीं करना चाहते हैं, लेकिन धन और प्रयास की संभावित बर्बादी के कारण अनुमान लगाना अधिक बुरा हो सकता है।
  • न केवल औसत अनुरोध दर बल्कि शिखर दर पर विचार करें। आप ऐसा सर्वर नहीं चाहते हैं जो अनुरोध दर को केवल बमुश्किल औसत दर से संभाल सके, क्योंकि दिन, सप्ताह और महीने में दर भिन्न हो सकती है। उदाहरण के लिए, मैं सप्ताहांत पर पीक ऑवर्स के दौरान 3-4x ट्रैफ़िक प्राप्त कर सकता हूं जैसा कि मैं सप्ताह के दौरान न्यूनतम घंटों में करता हूं। यह कितना भिन्न होता है यह आपके आवेदन और उपयोगकर्ता आधार पर निर्भर करेगा।
  • क्या आप अपने किसी डेटाबेस / HTTP अनुरोध को कैश कर सकते हैं? यह आपके अनुरोध दर को सस्ते / कम हार्डवेयर के साथ बढ़ा सकता है जो इस बात पर निर्भर करता है कि आप कितना कैश कर सकते हैं।
  • बाद में के बजाय भविष्य के विकास के लिए अपने स्केलिंग विकल्पों पर विचार करें। एक अच्छा विकल्प क्षैतिज स्केलिंग का उपयोग करना हो सकता है जो आपको न्यूनतम हार्डवेयर के साथ शुरू करने और आसानी से आवश्यकतानुसार बढ़ने देगा।
  • आपकी एप्लिकेशन परत का उचित डिज़ाइन इसके अंतिम प्रदर्शन पर बहुत अधिक प्रभाव डाल सकता है। बिना इंडेक्स वाली मेज पर खराब SQL क्वेरी एक ठीक से डिज़ाइन किए गए की तुलना में परिमाण धीमी के आदेश हो सकती है। इसी तरह, खराब तरीके से कॉन्फ़िगर किया गया Apache / MySQL सर्वर सही ढंग से सेटअप होने पर कई बार धीमा हो सकता है।
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.