Otestujte rychlost komunikace PHP s databází na svém hostingu

Pro měření rychlosti databáze existuje celá řada nástrojů v čele s SysBench. Ne všechny lze bez problémů použít v prostředí běžného sdíleného hostingu. I tak ale můžete jeho rychlost otestovat při použití PHP skriptu komunikujícího s MySQL, SQLite 3 a běžným souborem.

Reklama

Je tomu už více jak rok, co jsem zde na Maxiorlovi napsal článek o testování výkonu hostingu a měření rychlosti zpracování PHP skriptů pomocí nástroje PHP benchmark. V článku jsme společnými silami dali dohromady tabulku ukazující, který hosting zvládá nejrychleji a nejpomaleji zpracování PHP skriptů.

Aktuálně řeším nějaké problémy s výkonem webů majících rozsáhlejší databázi, tak mě zajímalo, jak by se daly jednoduše změřit rychlosti komunikace s databází na různých hostingových programech různých poskytovatelů.

A protože se mi nechtělo nic programovat, objevil jsem již hotový skript, který pro tyto účely sestrojil Tournas Dimitrios. Popisuje jej v článku A Simple PHP-script to Benchmark Read/Write Cycles of Mysql , SQLite and Regular-Textfiles.

Nejsem si jist, zda pro všechny bude srozumitelné, jak daný skript spustit, takže to zkusíme trošku více polopatě:

  1. První skriptík uložte do souboru Timer.Class.php a jeho první řádek nahraďte znaky <?php
  2. Druhý uložte jako soubor mysql.php a první řádek opět nahraďte znaky <?php
  3. Ve funkci mysqli_connect() upravte údaje pro připojení k databázi
  4. Zkuste mysql.php otevřít v prohlížeči. Pokud neuvidíte čtvrtý řádek s výsledky čtení z databázové tabulky, pak zeditujte řádek 25 a opravte název tabulky tak, aby měl malá písmena
  5. Další skript uložte jako sqlite3.php
  6. A konečně poslední skript uložte jako file.php

Upravené původní soubory od Tournase Dimitriose jsem si dovolil přiložit na konec tohoto článku. Postupně stačí tedy po editaci údajů v mysql.php spustit jej, sqlite3.php a file.php a zjistíte rychlosti spojení s databází a čtením/zápisem do souboru.

Test rychlosti databází na různých hostingových službách

Výše uvedenou trojici jednoduchých měřicích nástrojů jsem zkusil spustit na různých hostingových službách a několika virtuálních serverech. Naměřené výsledky jsou v tabulce. Můžete-li, vyzkoušejte u sebe a já vaše výsledky stejně jako u nahoře zmiňovaného článku doplním.

Hosting a tarif

Změřil

Spojení

Vytvoření tabulky

Zápis dat

Čtení dat do pole PHP

 

 

MySQL

SQLite3

MySQL

SQLite3

MySQL

SQLite3

soubor

MySQL

SQLite3

Soubor

Macbook

Jan Polzer

0.00173783

0.0003202

0.00201702

0.00062609

0.10328889

0.59306407

0.11834884

0.10374284

0.6004262

0.12341094

Wedos noLimit Extra

Jan Polzer

0.00580692

0.01203203

0.73991108

0.02761102

6.51315904

2.39362192

0.15134215

6.51977992

2.39582896

0.15188503

Wedos noLimit Extra Josef Grill, Wedos 0.00063705 0.00029898 0.0008812 0.02373791 0.11056113 2.02828002 0.06896019 0.11067319 2.03071404 0.06960702
Wedos noLimit Extra, SSD Jan Polzer 0.00081897   0.0010829   0.15254998     0.15270495    

HostGator Baby Plan

Jan Polzer

0.00489902

0.00079799

0.01840401

0.00905299

0.06848001

0.9984839

0.01801205

0.07114792

1.00135899

0.01905107

Linode 1024

Jan Polzer

0.00041199

 

0.00381899

 

0.12980008

 

 

0.13030791

 

 

Webhosting C4

Jan Polzer

0.00033784

0.00024319

0.00237203

0.02390814

0.05650902

0.68207312

0.06529403

0.05702281

0.68401909

0.06565905

Active24 Business

Jan Polzer

0.0029428

 

0.03615999

 

0.7014699

 

 

0.7032938

 

 

Savana 3000

Práce s hendikepem

0.00063014

 

0.27650094

 

0.31602407

 

0.97094607

0.31625414

 

0.97136092

Hexageek Web Basic Hexageek 0.00016713 0.00019693 0.12106705 0.00041485 0.14672899 0.01434398   0.14687514 0.01441097  
Hexageek cPanel Start Hexageek 0.00251389 0.00044298 0.03785992 0.00099993 0.14784002 1.18873787   0.14826894 1.19878888  

Poznámka: Macbook znamená Macbook Pro s SSD Samsung SSD840 512 GB Pro a 16 GB RAM, test v prostředí MAMP.

Tip: Tabulku si můžete stáhnout do Google Docs a výsledky ve sloupcích jednoduše seřadit. Jak na to najdete v článku Jak importovat a parsovat data z webu do tabulky v Google Docs.

Co říci k výsledkům? Výsledky jsou uvedeny v sekundách a samozřejmě jsou to velice malá čísla. Zkuste si je ale vynásobit třeba desítkou a už dostanete pro porovnání na pohled zajímavější údaje. Z výsledků vyplývá několik věcí:

1. Výborná rychlost databáze nemusí znamenat výborné načítání webu. To platí třeba pro HostGator, z nějž se weby umístěné v USA v Česku načítají o poznání pomaleji, než z místních hostingů. Přesto mě mile překvapil.

2. Vyhrazený virtuální server nemusí být nutně rychlejší v momentě, kdy je na serveru relativní klid. Na druhou stranu vám ale poskytne i tak více komfortu, protože zde nesdílíte databázi s mnoha dalšími weby.

3. Změřené hodnoty u Wedosu byly zklamáním na celé čáře. Delší dobu mám pocit, že něco neklape co se týče přístupu k databázi. Nechci jim ale křivdit a zkusím toto pořešit. Reakci určitě do tohoto článku doplním, bude-li nějaký výsledek.

Doplněno 24. 9. 2013

Doplnil jsem do tabulky ještě výsledky pro skoro 700 MB databázi u Wedosu, která je přesunuta na SSD. Rozdíl je závratný.

PřílohaVelikost
Package icon bench.zip2.41 KB

Reklama

Komentáře

Ten wedos je zvláštní, vyšly mě jiné hodnoty (mysql) na stejném tarifu:Db connection established at : 0.00116181Table created at : 0.06170893Data inserted into the table at : 0.25398684Data is read from table and inserted into an array at : 0.25485396

Díky. Řeším to s nimi u dvou hostingů, tak později do článku napíšu report. Zřejmě je to tedy ojedinělý problém.

Tvořím weby. Nabízím poradenství pro Drupal. Jsem na Twitteru.

Pokud jsem to dobře pochopil, tak u Wedosu je testovaný "Wedos noLimit Extra". Pokud je zájem, mohu zprostředkovat otestování jejich VPS. Mám v pořadí asi předposlední typ jejich VPS. Sám na tento test a záznam výsledků nemám tolik času, ale rád přidělím uživatelské údaje pro doplnění tabulky.

Můžu zkusit. Stačí mi poslat do mailu (jan.polzer zavináč maxiorel.cz) nějaké FTP a přístup k databázi.

Tvořím weby. Nabízím poradenství pro Drupal. Jsem na Twitteru.

Poslal jsem FTP a MySQL údaje na Váš e-mail. 

Pak by možná stálo za to uvést taky na jakém virtuálu web běží, evidentně mají někde problém a nemusí se to týkat všech.

Dobrý den,máme databázových serverů
několik desítek a nelze takhle něco paušalizovat. Každý server se může v
jednom okamžiku chovat jinak. Na jakém serveru a na jakém webu jste to testoval? Reálně může jít třeba o to, že tam máte problémy s výkonem webu nebo s optimalizací databáze nebo její velikostí. Porovnával jste na všech webhostinzích databází, která má stovky MB?Tohle všechno může mít vliv.
Musíte brát v úvahu i další hlediska.
Například to, že všechny naše MySQL nejsou localhost, ale naopak po
síti. Má to výhody z hlediska stability a bezpečnosti. Na druhou stranu
tam může reálně vzniknout prodleva. Je to však prodleva, která nemá vliv
na načítání webu.

Nově zřizované weby zřizujeme na SSD discích a tak by
i tam výsledek byl jiný.
Můžeme dodat výsledky pro porovnání a můžeme vybrat i další servery u nás a porovnat.

 Pokud má kdokoliv jakýkoliv problém, tak to řešíme.

Možná by bylo dobré, abychom to vyřešili po mailu a tady pak publikovali, kde byl problém. Jenomže to byste mi musel odpovědět ;-) Ohledně článku jsem Vám psal.

Test byl s databází tohoto webu, na HostGatoru na jeho identické kopii, na dalších webech s podobně velkou databází.

6 sekund vs méně jak sekunda je velký rozdíl.

Výsledky z hostingu se SSD rád zveřejním.

Mimochodem, ono mi totiž trvá i 16 sekund jenom otevření databáze v phpMyAdminovi (ten je samotný načten okamžitě), takže opravdu tu vidím problém s databází. Možná jen v tomto konkrétním případě, možná náhodně i u jiných.

Ale opravdu si nechci dopisovat přes komentáře, když to můžeme pohodlně vyřešit mailem :-(

Tvořím weby. Nabízím poradenství pro Drupal. Jsem na Twitteru.

Dobrý den,
určitě to vyřídíme přes e-maily, ale schválně jsme si nyní udělali test a tam vidíte hodně jasné výsledky.
Zkusíme ještě jednu věc - více v mailu.

Výsledky WEDOS
Zde jsou výsledky z aktuálního serveru pro webhostingy, včetně databází. Je to testované na čisté a prázdné databázi (a ne na databázi se stovkami MB na které jste to zřejmě testoval tady).Test první:
Db connection established at : 0.00063705
Table created at : 0.0008812
Data inserted into the table at : 0.11056113
Data is read from table and inserted into an array at : 0.11067319
Pro ověření:http://52942.w42.wedos.ws/test/mysql.php

Test druhý:Db connection established at : 0.00029898
Table created at : 0.02373791
All data is set into the table at : 2.02828002 Data is read from table and inserted into an array at : 2.03071404Pro ověření:
http://52942.w42.wedos.ws/test/sqllite3.php

Test třetí:Opening file for inserting the data : 2.217E-5
All data is inserted into the file : 0.06896019 End of file read at : 0.06907821
Data inserted into array at : 0.06960702

Pro ověření:
http://52942.w42.wedos.ws/test/file.php

Tohle jsou výsledky z reálného serveru, což lze ověřit i z IP. Lze to otestovat kdykoliv. Výsledky nejsou špatné, ale naopak velmi pěkné.

Díky za odkazy a doplnění. Nicméně neříkejte, že jste horší, než HostGator, který tu velkou databázi zvládne s přehledem (byť má jiné problémy), co? ;-) Chtělo by to výsledky na podobně velké databázi, jako jsem použil já.

Tvořím weby. Nabízím poradenství pro Drupal. Jsem na Twitteru.

Dobrý den,
jen bych k tomu doplnění ohledně těch SSD u WEDOS poznamenal jednu věc... Když už to "vyplulo na povrch", tak dodáváme, že všechny nové webhostingy u WEDOS již mají automaticky databáze na SSD, tak s výše uvedenými výsledky.¨
Zároveň jsme se rozhodli, že v případě potřeby tam přemigrujeme i některé starší.
Plus jsme se rozhodli a začali jsme i realizovat postupnou migraci všech MySQL serverů (je jich asi 46 :-( ) na SSD. Tak se dočkají všichni.

Spokojenost klientů je u WEDOS prioritou...

Jestli muzu za nas tak Klasicky Web Basic 
MySQL: Db connection established at : 0.00016713
Table created at : 0.12106705
Data inserted into the table at : 0.14672899
Data is read from table and inserted into an array at : 0.14687514

SQLITE3Db connection established at : 0.00019693
Table created at : 0.00041485
All data is set into the table at : 0.01434398 Data is read from table and inserted into an array at : 0.01441097

a novy CPANEL HOSTING / CPANEL STARThttp://www.hexageek.com/cze/pages/cpanel-hosting
MYSQLDb connection established at : 0.00251389
Table created at : 0.03785992
Data inserted into the table at : 0.14784002
Data is read from table and inserted into an array at : 0.14826894

SQLITE3Db connection established at : 0.00044298
Table created at : 0.00099993
All data is set into the table at : 1.18873787 Data is read from table and inserted into an array at : 1.19878888

Jak občas koukám na Webtrh a Vaši aktivitu u podobných příspěvků, tak jsem jenom čekal, kdy se ozvete :-) Ale samozřejmě díky, výsledky jsem do tabulky doplnil. Mimochodem, cPanel hosting i jeho parametry vypadají docela zajímavě.

Tvořím weby. Nabízím poradenství pro Drupal. Jsem na Twitteru.

Pěkný test. Jen mi není jasná jedna věc - čas.
Čím vetší číslo tím lepší? Jestli to je tedy v sekundách, nemělo by menší číslo být tedy lepší? Nějak mi to není jasné. Díky za objasnění :)

Čím menší, tím lepší.

Tvořím weby. Nabízím poradenství pro Drupal. Jsem na Twitteru.

Přidat komentář