Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Skrypt maksymalnie obciążający serwer
Forum PHP.pl > Forum > PHP
koskitos
Witam!
Mam prośbę, gdyż testuję mój własny serwer.

Chciałbym na nim odpalić bardzo obciążający skrypt.
Niech to będzie obciążenie maksymalne i wszystkiego (najlepiej procesora - obliczenia oraz mysql - jakies ciezkie zapytania).
Wszystko w pętlę i już.

Jakie są funkcje mocno obciążające serwer?
Podajcie najlepiej jakiś kod.

Z góry dzięki za odpowiedzi!
cicik
Walnij sobie w bazie danych tabele z polem TEXT.
Wbij tam jakies 500 000 rekordow z dlugim teksetm i zrob zapytanie select * from tabela where pole like '%a%'

Potem kazdy wyniki zapytania potraktuj jakas funkcja typu eregi_replace, zrob to w dziesieciokrotnej petli i odpal 5 takich skryptow na raz. Idz na kawe, na spacer, wroc i sprawdz czy jest juz wynik i czy z komputera dym nie leci ;-)
alex19
A nie ma jakis gotowych rozwiazan do testowania wydajnosci serwerow?
W sumie to mi by sie tez przydalo cos do testowania wydajnosci. Bede instalowal system w jednej firmie na serwerze specjalnie do tego zakupionym, ale fajnie by bylo sie dowiedziec ile ten serwer moze pociagnac.
Najlepiej zeby mozna bylo okreslic stosunek pracujacych rownoczesnie uzytkownikow do wielkosci bazy danych. Nie zabardzo mi sie chce pisac jakis skryptow do testowania dlatego by sie przydalo cos gotowego smile.gif
Dandelion
na chlopski rozum poprostu zrobic petle ktora nigdy sie nie konczy
alex19
No, a co to da?? Jedynie moze zatluc serwer, a nic konkretnego nie pokaze.
Ja np bym chcial sie dowedziec ile serwer pociagnie rownoleglych polaczen, polaczeni z baza no i jak to sie bedzie rozkladalo przy bazie z 100 000 rekordow, a jak z milionem.
Adrian Staniszewski
Takiegos czegos raczej nie znajdziesz. Z napisaniem tez bedzie ciezko, no ale moze Ci sie uda.. jak tak to pochwal sie co napisales winksmiley.jpg

p.s
przyda sie tongue.gif
NuLL
EZ Publisha sprobuj zainstalowac i uruchomic biggrin.gif
alex19
Domyslam sie ze by sie przydalo. Moze jedank ktos juz cos takiego napisal.
Ja nie zabardzo wiem jak sie zabrac za pisanie benchmarka dla serwera sad.gif .

W sumie to mozna by napisac cos co by do bazy dodawalo po 10 000 rekordow, wykonywalo jakies operacje np z preg_replace i mierzylo czas wykonywania. Jest tylko jeszcze kewstia odpalania tego kilka razy rownoczesnie.
hwao
Cytat(NuLL @ 21.11.2006, 16:34:18 ) *
EZ Publisha sprobuj zainstalowac i uruchomic biggrin.gif


Opieram, nie ma lepszego testu dla maszyny ;-)
Speedy
Jakiś czas temu próbowałem zainstalować ez publisha na localhoscie i mi się nie udało tongue.gif, a nie mam wcale tak powolnego komputera winksmiley.jpg.
batman
Jeśli masz serwer na apache, to pewnie chodzi Ci o coś takiego: ab
alex19
O to juz jest cos.
A jest jakis benchmark do MySQL'a?
batman
Nie używałem, więc nie wiem czy i jak działa (BTW pierwszy wynik na google)

MySQL AB
alex19
No to teraz juz do szczescia potrzeba by tylko bnechmarka apacha razem z mysqlem biggrin.gif
batman
Nie wiem niestety czy jest takie narzędzie. Ale nie sądzę, by było Ci ono potrzebne, skoro masz oba powyższe.
alex19
No ta, ale testownie apache i mysql razem bylo by najlepszym rozwiazaniem i najlepiej by odzwierciedlalo ile serwer pociagnie smile.gif
cadavre
Maks? Na szybko z palca:
  1. <?php
  2.  
  3. $time_start = date("H:m:s");
  4.  
  5. // baza danych
  6. $db_user = "";
  7. $db_password = "";
  8. $db_host = "localhost";
  9. $db_type = "MYISAM";
  10. mysql_connect($db_host,$db_user,$db_password);
  11. mysql_query("CREATE DATABASE `benchmark` DEFAULT CHARACTER SET utf8");
  12. mysql_select_db("benchmark");
  13.  
  14. $time_dbconnect = date("H:m:s");
  15.  
  16. $letters_array = array("a","b","c","d","e","f","g","h","i","j","k","l","m","n","o","p","r","s","t","u","w","v","x","y","z","A","B","C","D","E","F","G","H","I","J","K","L","M","N","O","P","R","S","T","U","W","V","X","Y","Z"," ");
  17.  
  18. for ($i=0;100000>$i;$i++) {
  19. $text_one .= $letters_array[(int)rand(1,count($letters_array))];
  20. }
  21.  
  22. $time_textone = date("H:m:s");
  23.  
  24. for ($i=0;50000>$i;$i++) {
  25. $text_two .= $letters_array[(int)rand(1,count($letters_array))];
  26. }
  27.  
  28. $time_texttwo = date("H:m:s");
  29.  
  30. for ($i=0;100>$i;$i++) {
  31. mysql_query("CREATE TABLE `table$i` (
  32. `text_one` LONGTEXT NOT NULL ,
  33. `text_two` LONGTEXT NOT NULL
  34. ) TYPE = $db_type");
  35. for ($x=0;1000>$x;$x++) {
  36. mysql_query("INSERT INTO `table$i` ( `text_one`,`text_two` ) VALUES ( '$text_one','$text_two' )");
  37. }
  38. }
  39.  
  40. $time_mysql = date("H:m:s");
  41.  
  42. for ($i=0;100>$i;$i++) {
  43. $query = mysql_query("SELECT `text_one` FROM `table$i`");
  44. while ($db_data = mysql_fetch_array($query)) {
  45. ${to_save.$i} = ereg_replace($letters_array[(int)rand(1,count($letters_array))],$letters_array[(int)rand(1,count($letters_array))],$db_data['text_one']);
  46. mysql_query("UPDATE `table$i` SET `text_one`='" . ${to_save.$i} . "'");
  47. }
  48. }
  49.  
  50. $time_finish = date("H:m:s");
  51.  
  52. echo "Start:" . $time_start . "<br>";
  53. echo "DB connect:" . $time_dbconnect . "<br>";
  54. echo "Text 100k:" . $time_textone . "<br>";
  55. echo "Text 50k:" . $time_texttwo . "<br>";
  56. echo "100x double sql_query:" . $time_mysql . "<br>";
  57. echo "Queries + reg replace = finish:" . $time_finish . "<br>";
  58.  
  59. ?>
Możesz pozmieniać wartości w pętlach. Troszkę skomplikowałem składnie gdzieniegdzie i inne "dodatki' typu fetch_array czy rand'y...

Powodzenia. winksmiley.jpg BTW Nie zapomnij zrobić .htaccessa bądź zmienić w php.ini maksymalnego czasu wykonywania skryptu.
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.