200 अनुरोध / सेकंड के ऊपर php5 + MySQL को कैसे स्केल करें?


16

मैं प्रदर्शन के लिए अपने मुखपृष्ठ को ट्विक कर रहा हूं, वर्तमान में यह 3.14.by पर 200 अनुरोधों / सेकंड के बारे में संभालता है, जो 6 एसक्यूएल प्रश्नों को खाता है, और 20 रीक / सेकंड 3.14.by/forum पर है जो कि phpBB फोरम है।

अजीब तरह से, संख्या कुछ वीपीएस और समर्पित एटम 330 सर्वर पर समान हैं।

सर्वर सॉफ्टवेयर निम्नलिखित है: Apache2 + mod_php प्रीफ़ॉर्क 4 चिल्ड (यहां अलग-अलग नंबर की कोशिश की गई), php5, APC, nginx, PHP सेशन स्टोरेज के लिए मेमचैक्ड।

MySQL उपलब्ध RAM का लगभग 30% (VPS पर 150Mb, समर्पित सर्वर पर 700Mb) खाने के लिए कॉन्फ़िगर किया गया है

ऐसा लगता है कि एक अड़चन है कहीं मुझे उच्चतर, किसी भी सुझाव की अनुमति नहीं है? (यानी मुझे पता है कि 6 एसक्यूएल से कम करने से यह तेज हो जाएगा, लेकिन यह एक सीमित कारक की तरह नहीं दिखता है, क्योंकि वर्गल्ड कैश्ड प्रश्नों के कारण शीर्ष में कुछ% से अधिक नहीं खाता है)

किसी ने परीक्षण किया है कि अपाचे 2 को लात मारना और सिर्फ नगनेक्स + php को छोड़ना ज्यादा तेज है?

कुछ और बेंचमार्क

Small 40-byte static file: 1484 r/s via nginx+apache2, 2452 if we talk to apache2 directly. 
Small "Hello world" php script: 458 r/s via ngin+apache2.

अपडेट: ऐसा प्रतीत होता है कि कैश्ड डेटा पर अड़चन MySQL का प्रदर्शन है। एकल SQL के साथ पेज 354req / सेकंड दिखाता है, 6 SQL - 180 req / sec के साथ। आपको क्या लगता है कि मैं यहां ट्विस्ट कर सकता हूं? (मैं MySQL के लिए 100-200Mb कांटा कर सकता हूं)

[client]
port        = 3306
socket      = /var/run/mysqld/mysqld.sock

[mysqld_safe]
socket      = /var/run/mysqld/mysqld.sock
nice        = 0

[mysqld]
default-character-set=cp1251
collation-server=cp1251_general_cs

skip-character-set-client-handshake

user        = mysql
pid-file    = /var/run/mysqld/mysqld.pid
socket      = /var/run/mysqld/mysqld.sock
port        = 3306
basedir     = /usr
datadir     = /var/lib/mysql
tmpdir      = /tmp
skip-external-locking

bind-address        = 127.0.0.1

key_buffer      = 16M
max_allowed_packet  = 8M
thread_stack        = 64K
thread_cache_size   = 16
sort_buffer_size    = 8M
read_buffer_size    = 1M

myisam-recover      = BACKUP
max_connections        = 650
table_cache            = 256
thread_concurrency     = 10

query_cache_limit       = 1M
query_cache_size        = 16M

expire_logs_days    = 10
max_binlog_size         = 100M

[mysqldump]
quick
quote-names
max_allowed_packet  = 8M

[mysql]
[isamchk]
key_buffer      = 8M

!includedir /etc/mysql/conf.d/

आप अपाचे और नगनेक्स दोनों का उपयोग क्यों कर रहे हैं?
जामईब

यह सामान्य विन्यास है, Apache2 to PHP और विभिन्न एप्स के लिए अपाचे अवसंरचना की आवश्यकता है, लोड पर apache2 मेमोरी पदचिह्न को कम करने के लिए nginx।
BarsMonster

दरअसल, मैं आपकी समस्या को नहीं समझ रहा हूं। क्या आपकी साइट वर्तमान में धीमी है? यदि हां, तो यह कितना धीमा है? और आप इसे कितना तेज करना चाहते हैं? क्या आपने यह निर्धारित करने के लिए अपनी साइट के किसी भी हिस्से को प्रोफाइल करने का प्रयास किया है कि अड़चन कहां है?
1

यह विवरण में है: अब यह 180-200 अनुरोधों / सेकंड पर है। जबकि यह एक तरह से अधिक है तो एक मुखपृष्ठ के लिए पर्याप्त है, मैं इस सेटअप को अन्य कोडबेस काम पर बनाए गए अन्य साइटों को तेजी से काम करना चाहता हूं। आदर्श रूप से मैं डायनेमिक पेजों के साथ 100Mbit कनेक्शन को संतृप्त करना चाहता हूं :-)
BarsMonster

2
"प्रति सेकंड अनुरोध" वास्तव में इस संदर्भ में एक सार्थक मीट्रिक नहीं है। मेरी नेटबुक "प्रति सेकंड 200 अनुरोधों" को संभाल सकती है। आपको यह बताने की जरूरत है कि आप किस तरह की कनेक्शन दर के तहत प्रतिक्रिया समय प्राप्त करना चाहते हैं।
जैमीब

जवाबों:


29

जाहिर है, आप बहुत कुछ कर सकते हैं। आपका सर्वश्रेष्ठ दांव उन प्रश्नों के लिए आपके लॉग का पीछा कर रहा है जो अनुक्रमित (उन लोगों के लिए लॉग को सक्षम) और अन्य गैर-अनुकूलित प्रश्नों का उपयोग नहीं करते हैं। मैंने वर्षों में प्रदर्शन से संबंधित विकल्पों की एक विशाल सूची तैयार की है, इसलिए मैंने आपकी जानकारी के लिए एक छोटा सा उपसमुच्चय शामिल किया है - उम्मीद है कि यह मदद करता है। यहां उन चीज़ों के लिए कुछ सामान्य नोट्स दिए गए हैं जिन्हें आप आज़मा सकते हैं (यदि आप पहले से नहीं हैं):

माई एसक्यूएल

  • query_cache_type = 1 - कैश SQL क्वेरी चालू है। यदि 2 पर सेट किया जाता है, तो SQL_CACHE संकेत उनके पास होने पर क्वेरीज़ केवल कैश की जाती हैं। इसी प्रकार 1 के साथ, आप SQL_NO_CACHE संकेत के साथ किसी विशेष क्वेरी के लिए कैश को अक्षम कर सकते हैं
  • key_buffer_size = 128M (डिफ़ॉल्ट: 8M) - MyISAM टेबल इंडेक्स के लिए मेमोरी बफर। समर्पित सर्वरों पर, key_buffer_size को कम से कम एक चौथाई सेट करने का लक्ष्य है, लेकिन सर्वर पर मेमोरी की कुल मात्रा का आधा से अधिक नहीं
  • query_cache_size = 64M (डिफ़ॉल्ट: 0) - क्वेरी कैश का आकार
  • back_log = 100 (डिफ़ॉल्ट: 50, अधिकतम: 65535) - बकाया कनेक्शन अनुरोधों की कतार। केवल तभी मायने रखता है जब कम समय में बहुत सारे कनेक्शन हों
  • join_buffer_size = 1M (डिफ़ॉल्ट: 131072) - पूर्ण तालिका स्कैन (कोई अनुक्रमणिका) होने पर उपयोग किया जाने वाला बफर
  • table_cache = 2048 (डिफ़ॉल्ट: 256) - आपकी अधिकतम SQL क्वेरी में शामिल JOINs की अधिकतम संख्या से अधिकतम_सुधार_कनेक्शन गुणा किया जाना चाहिए। एक गाइड के रूप में पीक समय में "ओपन_टैबल्स" चर का उपयोग करें। "Open_tables" चर को भी देखें - यह "open_tables" के करीब होना चाहिए
  • query_prealloc_size = 32K (डिफ़ॉल्ट: 8K) - कथन पार्स और निष्पादन के लिए लगातार स्मृति। जटिल प्रश्न होने पर बढ़ाएं
  • Sort_buffer_size = 16M (डिफ़ॉल्ट: 2M) - छँटाई के साथ मदद करता है (ORDER BY और GROUP BY संचालन)
  • read_buffer_size = 2M (डिफ़ॉल्ट: 128K) - क्रमिक स्कैन के साथ मदद करता है। कई अनुक्रमिक स्कैन हैं, तो बढ़ाएँ।
  • read_rnd_buffer_size = 4M - सॉर्ट के बाद पढ़ने में MyISAM तालिका को गति देने में मदद करता है
  • max_length_for_sort_data - सॉर्ट फ़ाइल में पंक्ति पॉइंटर के बजाय स्टोर करने के लिए पंक्ति आकार। रैंडम टेबल रीड्स से बच सकते हैं
  • key_cache_age_threshold = 3000 (डिफ़ॉल्ट: 300) - हॉट-ज़ोन में कुंजी कैश रखने का समय (इससे पहले कि इसे गर्म करने के लिए आबंटित किया जाता है)
  • key_cache_division_limit = 50 (डिफ़ॉल्ट: 100) - एक अधिक परिष्कृत कैश निष्कासन तंत्र (दो स्तरों) को सक्षम करता है। नीचे के स्तर के लिए रखने के लिए प्रतिशत को दर्शाता है। delay_key_write = ALL - कुंजी बफ़र हर इंडेक्स अपडेट पर टेबल के लिए फ्लश नहीं किया जाता है, लेकिन केवल तब जब टेबल बंद हो। यह गति कुंजियों पर बहुत कुछ लिखती है, लेकिन यदि आप इस सुविधा का उपयोग करते हैं, तो आपको - Myisam-पुनर्प्राप्ति = BACKUP, बल विकल्प के साथ सर्वर शुरू करके सभी MyISAM तालिकाओं की स्वचालित जाँच को जोड़ना चाहिए
  • मेमॉक = 1 - मेमोरी में लॉक प्रक्रिया (स्वैपिंग को इन / आउट कम करने के लिए)

अमरीका की एक मूल जनजाति

  • स्पॉनिंग विधि बदलें (उदाहरण के लिए mpm पर)
  • यदि संभव हो तो लॉग को अक्षम करें
  • AllowOverride कोई नहीं - जब भी संभव हो। यह .htaccess फ़ाइलों की तलाश के लिए अपाचे को बंद कर देता है यदि उनका उपयोग नहीं किया जाता है तो यह फ़ाइल लुकअप अनुरोध को बचाता है
  • SendBufferSize - OS डिफ़ॉल्ट पर सेट करें। भीड़भाड़ वाले नेटवर्क पर, आपको इस पैरामीटर को सामान्य रूप से डाउनलोड की गई सबसे बड़ी फ़ाइल के आकार के करीब सेट करना चाहिए
  • KeepAlive Off (डिफ़ॉल्ट चालू) - और नेटवर्क कनेक्शन को ठीक से बंद करने के लिए lingerd इंस्टॉल करें और तेज हो
  • DirectoryIndex index.php - फ़ाइल सूची को यथासंभव छोटा और निरपेक्ष रखें।
  • विकल्प FollowSymLinks - अपाचे में फ़ाइल एक्सेस प्रक्रिया को आसान बनाने के लिए
  • Mod_rewrite या कम से कम जटिल regexs का उपयोग करने से बचें
  • ServerToken = prod

पीएचपी

  • variables_order = "GPCS" (यदि आपको पर्यावरण चर की आवश्यकता नहीं है)
  • register_globals = off - सुरक्षा जोखिम होने के अलावा, इसका प्रदर्शन प्रभाव भी है
  • जितना संभव हो उतना कम से कम शामिल करें_पाठ करें (अतिरिक्त फाइल सिस्टम लुकअप से बचाएं)
  • display_errors = off - त्रुटियों को दिखाने में अक्षम करें। सभी उत्पादन सर्वरों के लिए दृढ़ता से अनुशंसित है (समस्या के मामले में बदसूरत त्रुटि संदेश प्रदर्शित नहीं करता है)।
  • magic_quotes_gpc = बंद
  • मैजिक_कोट्स _ * = बंद
  • output_buffering = पर
  • यदि संभव हो तो लॉगिंग को अक्षम करें
  • expose_php = बंद
  • register_argc_argv = बंद
  • always_populate_raw_post_data = बंद
  • php.ini फ़ाइल को रखें जहाँ php इसके लिए सबसे पहले दिखेगा।
  • session.gc_divisor = 1000 या 10000
  • session.save_path = "N; / path" - बड़ी साइटों के लिए इसका उपयोग करने पर विचार करें। उपनिर्देशिकाओं में सत्र फ़ाइलों को विभाजित करता है

ओएस Tweaks

  • माउंट हार्ड डिस्क का उपयोग नो -टाइम विकल्प (कोई एक्सेस समय नहीं) के साथ करता है। इस विकल्प को / etc / fstab फ़ाइल में जोड़ें।
  • सबसे अच्छे परिणाम देखने के लिए / proc / sys / vm / swappiness (0 से 100 तक) घुमाएँ
  • RAM डिस्क का उपयोग करें - माउंट --bind -ttmpfs / tmp / tmp

यह अच्छी सूची है, मैंने पहले ही इनमें से अधिकांश को प्राप्त कर लिया है, और जब मैंने शेष चीजें जोड़ीं, तो प्रदर्शन में वृद्धि नहीं हुई। ऐसा लग रहा है कि PHP और MySQL के बीच कहीं अड़चन तो नहीं है, क्वेरी कैश से प्रति सेकंड 800 से अधिक अनुरोधों को संभालने में सक्षम नहीं हो रहा है ...
BarsMonster

ठीक है, आप mysql_connect ()) के बजाय डेटाबेस (mysql_pconnect () से कैसे जुड़ सकते हैं? क्या आप लगातार कनेक्शन का उपयोग करते हैं? दोनों तरीके आज़माएं ...
इवान पीवस्की

मैं पहले से ही pconnect पर हूं और कनेक्शन पूलिंग php.ini में सक्षम है ...: -S
BarsMonster

पूर्णता के लिए, मैं सिर्फ कनेक्ट करने का प्रयास करूंगा। मैंने ऐसे मामले देखे हैं (विशेषकर लोड परीक्षण में) जहां यह बेहतर प्रदर्शन करता है।
इवान पीवेस्की

1

यदि टोंटी सीपीयू नहीं है, तो इसका आईओ - या तो नेटवर्क या डिस्क है। तो .. आपको यह देखने की जरूरत है कि आईओ कितना चल रहा है। मैंने इसके नेटवर्क के बारे में नहीं सोचा होगा (जब तक कि आप 10mbps के आधे-डुप्लेक्स लिंक पर नहीं होते हैं, लेकिन ऑटो-डिटेक्ट के मामले में स्विच की जांच करने के लायक इसके लायक नहीं है)।

यह डिस्क IO को छोड़ देता है, जो विशेष रूप से VPS पर एक बड़ा कारक हो सकता है। डिस्क्स पर एक नज़र डालने के लिए सर या आइसोस्टैट का उपयोग करें, फिर अधिक जानकारी कैसे प्राप्त करें यदि आपकी डिस्क का भारी उपयोग किया जा रहा है।


हां, नेटवर्क समस्या नहीं है - जब स्थानीय सर्वर से एब चल रहा है, तो प्रदर्शन केवल एक ही है। मैंने iowait समय की जाँच की है - यह 0,01% के अंतर्गत है - मूल रूप से सब कुछ डिस्क कैश में है, और कोई डिस्क नहीं है जो प्रसंस्करण अनुरोध में शामिल है (सभी लॉग अक्षम हैं)।
BarsMonster

1

मैं या तो Nginx ( मेम्केड ) या वार्निश के साथ कैशिंग में देखूंगा

बहुत कम से कम आपको Nginx जैसे SaveTheRbtz के साथ स्थिर फ़ाइलों को सर्वर करना चाहिए।


ये डायनेमिक पेज हैं, इसलिए मैं इन्हें कैश नहीं करना चाहूंगा।
बार्समोनस्टर

1
मेमेकैच्ड एक पारंपरिक कैशिंग ऐप नहीं है और यह गतिशील पृष्ठों के लिए अद्भुत काम कर सकता है। यह DB और आपके ऐप के बीच बैठता है। आप किसी ऑब्जेक्ट के लिए पहले क्वेरीज़ को मेम करते हैं, यदि यह नहीं है, तो यह DB से लोड है। शुद्ध प्रभाव यह है कि आप DB पर बहुत धीमे स्टोरेज के बजाय अपने DB अनुरोधों की सेवा करने के लिए RAM का उपयोग कर रहे हैं।
जामिब

मेम्नेचे का उपयोग नगनेक्स के साथ किया जा सकता है, यह ज्ञात विशेषता है। धीमी गति से लगातार भंडारण का उपयोग नहीं किया जाता है, यह सब MySQL में क्वेरी कैश में है।
BarsMonster

Memcached और MySQL के प्रश्न कैश वास्तव में तुलनीय नहीं हैं; वे भी एक ही काम नहीं करते। आप उन्हें समझने के लिए परेशान किए बिना यहां पोस्ट किए गए हर सुझाव को बहुत जल्दी शूट करने के लिए बहुत जल्दी हैं। मेरा सुझाव है कि आप थोड़े अधिक खुले विचारों वाले होंगे।
जामिब

मैं स्पष्ट रूप से मेमकेच्ड और MySQL क्वेरी कैश के बीच अंतर को समझता हूं। लेकिन इस तथ्य के कारण कि सबकुछ 100% हिट अनुपात के साथ क्वेरी कैश में है, मैं इसे "धीमी गति से लगातार भंडारण" नहीं कहूंगा। मूल कल का जवाब NginX + Memcached का उपयोग करने के बारे में था जो पूरे पृष्ठों को कैश करने के लिए काफी सामान्य परिदृश्य है। व्यक्तिगत वस्तुओं को कैशिंग करना एक और, पूरी तरह से अलग परिदृश्य है। MySQL के सामने मेमेकैच्ड का उपयोग करते हुए टेबल पर है, मैं अभी इसके लिए और अधिक रस प्राप्त करने के बारे में सोच रहा हूं (क्योंकि इसमें काफी कोड परिवर्तन की आवश्यकता होगी)।
BarsMonster

1

जैसा कि सर्वर को समस्या नहीं लगती है, हो सकता है कि लोड जनरेटर है। इसे कई मशीनों पर चलाने की कोशिश करें।


प्रदर्शन एक ही है भले ही मैं इसे सर्वर से ही चलाऊं। कोई फर्क नहीं पड़ता कि कैसे मनु समवर्ती कनेक्शन - 10 या 50. लोड परीक्षण ab -c 10 -t 10
BarsMonster

1

यह मुझे लगता है कि आप अपाचे को अधिकतम अधिकतम कनेक्शन मार सकते हैं। अपने अपाचे कॉन्फ़िगरेशन पर एक नज़र डालें। यदि आप पहले से ही आई / ओ या मेमोरी जैसी किसी अन्य सीमा से बंधे नहीं हैं तो सर्वर लिमिट और मैक्सिमम क्लाइंट बढ़ाने में मदद करनी चाहिए। Mpm_prefork_module या mpm_worker_module के लिए मौजूद मानों को देखें और अपनी आवश्यकताओं को पूरा करने के लिए तदनुसार समायोजित करें।

ServerLimit 512
अधिकतम ग्राहक 512

ठीक है, क्या मुझे वास्तव में इसकी आवश्यकता है बशर्ते कि मेरे पास apache2 के सामने nginx है, इसलिए मैं
मानता हूं

बस यह सत्यापित किया गया। 4 से 16 तक अपाचे 2 प्रक्रियाओं की बढ़ती संख्या ने प्रदर्शन में सुधार नहीं किया (यह 0.5% भी गिरा)। 2 या 4 के लिए nginx कार्यकर्ताओं की बढ़ती संख्या में कुछ भी सुधार नहीं हुआ।
BarsMonster

1
यदि आपका डेटा काफी स्थिर है, यानी यह हर दूसरे पेज लोड को अपडेट नहीं करता है, तो आप अपने क्वेरी_चे को बढ़ा सकते हैं। MySQL उस तरह से सेट किए गए परिणाम पर पकड़ बनाएगा और मेमोरी से खींचेगा। हालाँकि, यदि जिस तालिका को कैश किया जा रहा है, उस दौरान कोई लिखता है, तो यह कैश (भले ही डेटा प्रभावित न हो) को अमान्य कर देता है, जिससे यह मेमोरी बर्बाद हो जाती है।
एरिक गिबर्ती

अभी मैं 100% क्वेरी कैश हिट अनुपात देख रहा हूं, और MySQL अभी भी धीमा महसूस कर रहा है ...
BarsMonster

1
अपनी MySQL कॉन्फिग फ़ाइल में स्किप-नाम-रिज़ॉल्यूशन जोड़ें। जो सर्वर से हर कनेक्शन पर DNS लुकअप को बचाएगा। यहां दोष यह है कि सभी कनेक्शनों को आईपी द्वारा लॉक करना होगा (यह मानकर कि आप '%' का उपयोग नहीं कर रहे हैं)। यदि SQL एक ही सर्वर पर है और उसे लोकलहोस्ट के अलावा कहीं और एक्सेस करने की आवश्यकता नहीं है, तो आप संपूर्ण TCP / IP स्टैक को मारने के लिए स्किप-नेटवर्किंग भी जोड़ सकते हैं। हालांकि, मुझे लगता है कि टोंटी अपाचे है।
एरिक गिबार्टी

0

क्या यह लोड एक उपकरण या वास्तविक दुनिया लोड द्वारा उत्पन्न होता है?

आप ज्ञापन की जांच करना चाहते हैं। मैंने इसके उच्च कनेक्शन दर पर मुद्दों को देखा है जिससे एप्लिकेशन में विलंबता पैदा हो रही है।

यदि एक लोड जनरेटर का उपयोग करते हैं, तो एक छोटे से स्थैतिक पृष्ठ से टकराने पर आपको क्या मिलता है?

लोड के दौरान, आप TIME_WAIT स्थितियों के लिए नेटवर्क स्टैक की जांच करना चाहते हैं। शायद आप अपनी कनेक्शन कतार भर रहे हैं।

लगभग 100 और कारण और आइटम आप देख सकते हैं, लेकिन अधिक जानकारी के बिना, मैं सिर्फ इस बिंदु पर अनुमान लगा रहा हूं।


यह ab-c 10 -t 10 URL के माध्यम से जांचा जाता है मैं सर्वर से ही बेंचमार्किंग कर रहा हूं, इसलिए नेटवर्क को समस्या नहीं होनी चाहिए। मैंने आपके अनुरोध के अनुसार अधिक बेंचमार्क पोस्ट किए हैं।
BarsMonster

मैं ab के साथ ट्यूनिंग में बहुत अधिक प्रयास खर्च नहीं करूंगा। आप पा सकते हैं कि यह वास्तविक दुनिया के प्रदर्शन में अच्छी तरह से अनुवाद नहीं करता है। आप जो करना चाहते हैं वह आपके ऐप को विच्छेदित कर सकता है और प्रत्येक घटक का परीक्षण कर सकता है। उदाहरण के लिए, अपाचे सर्वर को सीधे एक बहुत ही छोटे स्थैतिक पृष्ठ से सीधे मारो। यह आपको बैकएंड पर आपके अधिकतम रीक / सेक का विचार देगा। सामने नेग्नेक्स रखो, उसी बैकएंड फ़ाइल को कॉल करके फिर से परीक्षण करें। फिर एक सरल "हैलो वर्ल्ड" प्रकार के php पेज के साथ परीक्षण करें। कभी-कभी सभी परतें कुछ सरल मुखौटा कर सकती हैं। इसके अलावा, परीक्षण के दौरान कनेक्शन देखें। सुनिश्चित करें कि आपका नेटवर्क स्टैक नहीं भर रहा है।
jeffatrackaid

मैंने ये बेंचमार्क कल किए थे, और वे अद्यतन मूल प्रश्न विवरण में हैं। इसके अलावा, स्थानीयहोस्ट पर परीक्षण किए जाते हैं, इसलिए नेटवर्क कोई समस्या नहीं है।
BarsMonster

स्थानीय होस्ट पर किए जाने पर भी नेटवर्क एक समस्या हो सकती है। आपके मामले में संभावना नहीं है लेकिन यह मुद्दों का कारण बन सकता है। कम से कम अब आपके पास अपने वर्तमान PHP सेटअप के साथ ~ 450 req / sec की ऊपरी सीमा है। अगला कदम एक डेटाबेस कॉल में ड्रॉप करना है और देखें कि यह कैसे बदलता है। मुझे यह अलग करना पसंद है जब उच्च स्तर की ट्यूनिंग करना क्योंकि यह वास्तव में आपको सबसे अधिक मुद्दों के कारण परत को इंगित करने में मदद कर सकता है।
jeffatrackaid

-1

इस तरह के मुद्दों का 99% प्रतिशत डेटाबेस में वापस आ जाएगा। सुनिश्चित करें कि आपके हिटिंग इंडेक्स सबसे पहले हैं। यदि वह काम नहीं करता है, तो वह सब कुछ कैशिंग शुरू करें जो आप कर सकते हैं।


यह सभी अनुक्रमित है और जैसा कि मैं कह रहा था, यह 100% मामलों में MySQL क्वेरी कैश को भी मार रहा है
BarsMonster

-1

मैं आपको अपने वेब एप्लिकेशन से जुड़े डेटाबेस (प्रत्येक अनुरोध पर पुन: कनेक्ट करने की कोई आवश्यकता नहीं) को रखने के लिए एक कनेक्शन पूलर (यदि संभव हो) का उपयोग करने की सलाह देता हूं। जो कि गति का एक बड़ा अंतर बना सकता है।

इसके अलावा, EXPLAIN के साथ अपने सभी प्रश्नों का विश्लेषण करने का प्रयास करें (और क्यों अपने प्रश्नों को SHOW PROFILE के साथ प्रोफाइल न करें?)।


सभी प्रश्न अनुक्रमित का उपयोग करते हैं। MySQL Connection पूल का उपयोग किया जाता है।
बार्समनस्टर
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.