English version
German version
Spanish version
French version
Italian version
Portuguese / Brazilian version
Dutch version
Greek version
Russian version
Japanese version
Korean version
Simplified Chinese version
Traditional Chinese version
Hindi version
Czech version
Slovak version
Bulgarian version
 

40/sec да 500/sec

Софтуер RSS Feed





IntroductionSurprised, със заглавието? Е, това е една обиколка на начина, по който крекинг на скалируемост Jinx от работа с оскъдните 40 записа в секунда до 500 записа в секунда. Пазете се, повечето от проблемите, пред които са изправени са право напред, така че опитни хора могат да намерят това излишно. Съдържание * 1.0 Когато бяхме стигнали? 1.1 Памет хитове на небето 1.2 ниска преработка процент 1,3 загуба на данни :-( 1.4 Mysql ни дърпа 1,5 Бавно уеб клиент * 2,0 по пътищата да Nirvana2.1 Контрол памет! 2.2 Усъвършенстване обработка процент 2,3 Каква загуба на данни ъ-ъ-ъ-ъ? 2,4 настройка SQL заявки 2,5 настройка базата данни схема 2.5 Mysql ни помага да изградят напред! 2.6 По-бързо ... по-бързо уеб клиент * 3.0 Дънни lineWhere бяхме стигнали? Първоначално имахме една система, която може да мащаб само до 40 записа / сек. Дори мога да идвам на себе си за дискусията, за "това, което трябва да бъде идеалният размер на записи?". Накрая решихме, че е 40/sec идеален размер за една защитна стена. Така че, когато ние трябва да излезем, ние Поне необходими за поддържането на три защитни стени. Затова решихме, че 120/sec ще бъде идеална норма. Въз основа на данни от нашите конкуренти (и) стигнахме до извода, че те биха могли да подпомогнат около 240/sec. Ние, че това е ОК! , тъй като беше първото ни съобщение. Тъй като всички състезатели говори за броя на защитни стени той подкрепя, но не на rate.Memory удари skyOur памет е винаги удря небето дори и при 512 MB! (OutOfMemory изключение) ни обвини cewolf (и) inmemory кеширане на образуваните images.But ние не може да избяга за дълго! Без значение дали сме свързани на клиента или не ние използвахме да се удари в небето след няколко дни, не повече от 3-4 дни апартамент! Интересното е, че това е възпроизводими, когато ние изпращаме данни при високи темпове (тогава), на около 50/sec. Вие познахте право, неограничен буфер, който расте, докато не удари roof.Low rateWe обработка на обработване на данните са в размер на 40/sec. Сме използвали насипни актуализация на dataobject (а). Но това не даде очакваните скорост! Поради тази причина ние започнахме да съкровище данни в паметта води до презапасяване с памет! загуба на данни :-( при много високи скорости ние използвахме да пропуснете много за пакети (а). Ние като че ли са малко загуба на данни, но това е довело до паметта свиня. На някои променяте да се ограничи буфер размер започнахме като постоянна загуба на данните от около 20% при много високи rates.Mysql ни дърпа downWe са изправени пред труден момент, когато сме внесли лог файл от около 140MB. Mysql започна да свиня, машината започва и обхождането Понякога това дори да се спре responding.Above всички, ние започнахме да се застои (и) и сделката време (а). Който в крайна сметка намалява възможността за отговор на system.Slow Уеб ClientHere отново сме виновни броя на Графиките показаха в страницата като ограничаващ фактор, като се игнорира фактът, че има много други фактори, които са били дърпа системата надолу. Страниците използвани за 30 секунди да се зареди дадена страница, с 6-8 графики и таблици след 4 дни в интернет данни Center.Road в паметта NirvanaControlling! Опитахме се да се сложи лимит на буфер размер на 10 000, но това не трая дълго. Основният недостатък на проект е, че ние приемаме, че буфер от около 10 000 ще са достатъчни, т.е. ние ще бъдем процес записа преди буфер от 10,1000 достига. Вграден с принципа "Нещо може да се обърка то ще се обърка!" тя се обърка. Започнахме губи данни. Subsesquently ние решихме да отидем с плосък файлове на базата кеширане, при който данните се стовари в текстов файл и ще бъдат заредени в базата данни при използването на "товара данни infile". Това е много пъти по-бързо от едно насипно състояние вмъкнете чрез база данни водача. Може би искате да Checkout някои възможни оптимизации с товар данни infile. Този фиксиран проблем ни за увеличаване на размера на буфера суровата records.The Вторият проблем се сблъскахме е увеличаване на cewolf (и) в паметта за кеширане механизъм. По подразбиране той използва "TransientSessionStorage", който кешира изображението обекти в паметта, там като че ли се някой проблем в почистване на предмети, дори и след rerferences бяха загубени! Така че ние написахме едно малко "FileStorage" за изпълнение, която да запази изображението по обекти в локален файл. И ще бъде обслужен, както и когато искането идва инча Освен това, ние също implmentated едно почистване механизъм за почистване остаряла изображения (снимки на повече от 10mins). Друг интересен аспект ние открихме тук е, че колектора боклук беше най-нисък приоритет, така че обектите, създадени за всеки запис, едва ли са почистени. Тук е малко математика, за да обясни мащаба на проблема. Всеки път, когато получим информация влезете създадохме ~ 20 обекти (hashmap, tokenized струни и т.н.), така е в размер на 500/sec за една секунда, броя на обектите е 10 000 (20 * 500 * 1). Поради тежки колектор обработка боклук никога не са имали шанса да почистване на обектите. Така че всичко, което трябваше да направя е незначително ощипвам, ние просто разпределят "нула" на обекта препратки. Voila! боклука колектор никога не е измъчван предполагам ;-) координация обработка rateThe обработка процент е бил по-слаб 40/sec това означава, че едва ли може да издържат дори и малък изблик на регистър записи! Паметта на контрол ни даде някои утеха, но реалният проблем е с прилагането на сигнала, филтри за записите. Имахме около 20 свойства за всеки запис, ние се използва за търсене на всички имоти. Ние промяна на изпълнение на мач за тези имоти имахме критериите за! Освен това, ние също имаше теч в памет на сигнала обработка филтър. Ние поддържаме режим на изчакване, който нарасна завинаги. Така че ние трябваше да поддържа текстов файл цел да се избегне дъмпинга отново при анализ на данни за формата обекти! Освен това, ние използвахме да направи акта за търсене на мач за всеки от имотите дори когато не е имал сигнал configured.What критерии загуба на данни ъ-ъ-ъ-ъ? След като определя памет проблеми при получаване на данни, т.е. дъмпинга в текстов файл, никога не сме загубили данни! В допълнение към това ние трябваше да премахнете двойка на нежелани индекси в сурово таблица, за да се избегне въздушната докато дъмпинг данни. Ние hadd индекси за колоните, които биха могли да разполагат с максимум три възможни стойности. Което всъщност направи посочете бавно и не е useful.Tuning SQL заявки QueriesYour са ключът към изпълнението. Когато започнете да заковаване на въпроси, ще се види, че човек дори да се нормализират де-таблиците. Направихме го! Ето някои от основните обмен с: * Използвайте "Анализ на таблицата", за да определят как MySQL заявка за работа. Това ще ви даде представа за това, защо заявката е бавен, т.е. дали това е правилното използване на индексите, независимо дали е с помощта на таблицата ниво сканиране т.н. * Никога не Изтриване на редове, когато се справят с огромния данни от порядъка на 50 000 записа в една таблица. Винаги се опитвам да направя "таблица капка" колкото е възможно повече. Ако не е възможно, редизайн си схема, че ти е единствения изход! * Да се избягва нежелано присъединят (а), не се страхувайте да се нормализират-DE (т.е. дублира колона стойности) Избягвайте да се присъединят (а) възможно най-много , те са склонни да покажете вашата заявка надолу. Един скрит предимство е фактът, че те налагат простота в заявки .* Ако се занимават с Bulk Data, винаги използвайте "товар данни infile" има два варианта, тук, местните и дистанционно управление. Използвайте местната ако MySQL и прилагане, са в една и съща машина по друг начин да използват дистанционно .* Опитайте се да разделите вашия комплекс заявки на две или три прости заявки. Предимствата на този подход са, че MySQL Ресурсът не е hogged за целия процес. Са склонни да използват временни таблици. Вместо да използвате една заявка, която обхваща целия 5-6 маси .* Когато се справят с огромния обем от данни, т.е. вие искате да кажа процес 50000 записи или повече в едно търсене опитайте с ограничение на партидите процес на записи. Това ще ви помогне да мащаба на системата до нови висоти * Винаги използвайте по-малки операции (и) на мястото на големите т.е. на междуконтинентални "N" таблици. Това блокира на MySQL ресурси, които могат да предизвикат забавяне на системата, дори за прости заявки * Използвайте присъединят (и) на колони с индекси или външни ключове * Уверете се, че на запитвания от потребителския интерфейс са критерии или ограничи .* Също така гарантира, че критериите колона се индексира * Да не се имат цифрова стойност в SQL критерии в кавички, защото MySQL се видят гласове * Използвайте временни таблици, доколкото е възможно, и пуснете Поставете го на ...* изберете / изтриване е таблица с двоен кичур коса ... да са наясно ...* Внимавайте да не болка на MySQL база данни с честотата на вашия актуализации на базата данни. Имахме един типичен случай ние използвахме да стоварвам на база данни, след всеки 300 записа. Така че, когато ние започнахме изследвания за 500/sec започнахме виждам, че MySQL е буквално ни плъзгане надолу. Това е, когато си дадохме сметка, че typicall в размер на 500/sec има "Товар данни infile" искане на всеки втори на MySQL база данни. Така че ние трябваше да се промени за да зареже записи след 3 минути, вместо за 300 records.Tuning schemaWhen база данни ще се справят с огромния обем от данни, винаги да гарантират че дял вашите данни. Това е пътя си към скалируемост. Една таблица с да кажем 10 lakhs никога не може да мащаб. Кога възнамерявате да изпълнява заявки за доклади. Винаги има две нива на таблицата, сурова таблици една за актуални данни, и друг набор за доклада таблици (таблиците, които потребителския интерфейс заявка се!) Винаги се гарантира, че никога данните в отчета таблица расте отвъд граница. В кутия, която планирате да използвате Oracle, Можете да пробвате разделяне на базата на критерии. Но за съжаление MySQL не поддържа това. Така че ние ще трябва да го направя. Поддържа мета таблица, в която имате, т.е. заглавна информация, която таблица, за да търсят, за набор от зададени критерии нормално време .* Ние трябваше да ходим до нашата база данни схема и ще добавя да добавите някои показатели, изтрийте някои дори и дублирани колона (и) за премахване на скъпи присъединят (и) .* В бъдеще осъзнахме че след като суровините таблици, InnoDB е всъщност усилието за системата, така че ние го променя на MyISAM * Ние също отиде до степента на намаляване на броя на редовете в статични таблици, участващи в присъединява * NULL в базата данни таблицата изглежда да причини изпълнение удар, така че да избегнат * Не са показатели за колони, които е позволено стойности от 2-3 * повторна проверка на необходимостта от всеки индекс в таблицата, те са скъпи. Ако таблиците са InnoDB След това проверете за нуждите си. Защото InnoDB таблици изглежда да се вземат около 10-15 пъти размера на таблици MyISAM .* Използвайте MyISAM, когато има мнозинство от нито един от (изберете или въведете) заявки. Ако вмъкнете и изберете година ще бъдат повече, тогава е по-добре да го има като InnoDBMysql ни помага да изградят напред! настройка на MySQL сървър само след фина настройка вашите въпроси / схеми и кода си. Само тогава можете да видите видимо подобрение в представянето си. Ето някои от параметрите, който идва по-удобно: * Използвайте размер буфер резерв, които ще даде възможност на вашите запитвания да изпълни по-бързо - innodb_buffer_pool_size = 64M за InnoDB и работа - Ключ-bufer размер = 32 млн. за MyISAM * Дори и прости заявки започна да приема повече време от очакваното. Ние действително озадачи! Дадохме си сметка, че MySQL изглежда да се зареди индекса на всяка маса започва поставяне на. Така че това, което обикновено се случи, е, всички прости заявка към таблица с 50-10 реда се около 1-2 секунди. На по-нататъшен анализ открихме, че точно преди прост въпрос, "Зареждане на данни infile" се е случило. Това изчезна, когато се променя суровините таблици тип MyISAM, тъй като буфер размера за InnoDB и MyISAM са две различни configurations.for повече конфигурируеми параметри виж here.Tip: стартирате MySQL да започне със следните опции - Влез грешка Това ще позволи грешка loggingFaster ... по-бързо уеб ClientThe потребителския интерфейс е от ключово значение за всеки продукт, особено възприемат скоростта на страницата е по-важно! Ето списък на решения и обмен с , че може да дойде по-удобно: * Ако данните ви няма да се промени за 3-5 минути се каже, че е по-добре да се кешира страниците си клиентска страна * са склонни да използват вградена рамка (и) за вътрешна графики и т.н. Те дават възприема устойчивостта на страниците си. По-добре да използвам JavaScript базиран механизъм за зареждането на съдържание. Това е нещо, което може да искате да правите, когато сте се каже 3 + графики в една и съща страница .* Интернет Explorer показва цялата страница, само когато всички съдържание са получени от сървъра. Така че е препоръчително да се използва вложени фреймове или JavaScript за съдържанието зареждане .* Никога не използвайте многократно / дублиращи се записи на CSS файл в HTML страница. Интернет Explorer има тенденция да се зареди всяка CSS файла като отделен пост и се прилага на цялата страница! Bottomline Вашите запитвания и схема правят системата бавно! Прикрепвам тях и след това да обвинявам базата данни! Вижте също * висока производителност Mysql * ефективността на заявките *

Член Източник: Messaggiamo.Com

Translation by Google Translator





Related:

» Seo Elite: New Seo Software!
» AntiSpywareBOT
» Reverse Mobile
» Error Nuker


уебмастъра Вземи Html кодекс
Добави тази статия на вашия сайт сега!

уебмастъра Подайте членове
Не е необходима регистрация! Попълнете формата и статията ви е в Messaggiamo.Com директория!

Add to Google RSS Feed See our mobile site See our desktop site Follow us on Twitter!

Подайте членове на Messaggiamo.Com директория

Категории


Авторско право 2006-2011 Messaggiamo.Com - Карта на сайта - Privacy - уебмастъра представят вашите статии за Messaggiamo.Com директория [0.01]
Hosting by webhosting24.com
Dedicated servers sponsored by server24.eu