If you can't read please download the document
Upload
patrick-allaert
View
3.394
Download
7
Embed Size (px)
DESCRIPTION
Présentation de l'Altenative PHP Monitor (APM): une solution de monitoring d'erreurs et de Pinba: une solution de monitoring de performance.
Citation preview
2. Davide Mendolia
3. [email protected] ou @davideme(Twitter) 4. Dveloppeur principalAPM . 5. Contributeur dephp-benchmark . 6. http://www.php-ci.net/ 7. Travaille chezTuenti . 8.
9. Plus de 20milliards de pages vues/mois. 10. Premier site web espagnol devant Google, Microsoft et Facebook (Comscore). 11. Environnement de travail international (15diffrentes nationalits). 12. On recherche des dveloppeurs!!! 13. Patrick Allaert
14. [email protected] ou @patrick_allaert(Twitter) 15. Dveloppeur principalAPM . 16. Travaille chezeZSystems(eZPublish, eZComponents). 17. OrganisateurPHPBenelux ( http://www.phpbenelux.eu/ ). 18. Patrick Allaert
19. Dix ans d'vanglisme sur le Logiciel Libre. 20. Contributions :
21. KDESvn (client Subversion pour KDE), 22. XOof (eXtensible Open Object Oriented Framework), 23. Tabellio (suite collaborative pour assemble parlementaire). 24. Monitoring: Dfinition?
25. Domaines:
26. la charge d'une machine; 27. disponibilit applicative; 28. les messages inscrits en logs systmes; 29. les performances du rseau; 30. les attaques connues. 31. Monitoring: Pourquoi?
32. Souci d'conomie. 33. Exprience utilisateur. 34. Monitoring: Pourquoi? Quand j'arrive sur la page d'accueil j'ai une page blanche [] Srieux? Un moment, je regarde [] Nous sommes au courant du problme, nos ingnieurs ont trouvs la solution. Tout sera rentr dans l'ordre dans 5minutes Ho, oui, vous avez raison!? 35. Monitoring: Prsentation
37. Quelles sont les solutions ?
38. Zend Platform. Nouveaux venus:
39. Pinba. 40. PHP: fonctions intgres
41. display_errors; 42. error_log;
43. syslog,
set_error_handler(). 44. Zend Platform
46. haute disponibilit; 47. 48. APM
49. http://code.google.com/p/peclapm/ 50. @php_apm(Twitter) 51. Liste de diffusion: [email_address] 52. Ddi au monitoring d'erreurs. 53. Naissance en octobre 2008. 54. Dmo APM ! 55. Pourquoi ?
56. Brique manquante dans le paysage du logiciel libre. 57. Problmes de performance indirectement li la Zend Platform, besoin d'une solution l'impact minimum. + APM (LAMPAXA) 58. Architecture 59. Base de donnes event id INTEGER ts TEXT type INTEGER file TEXT line INTEGER message TEXT backtrace TEXT slow_request id INTEGER ts TEXT duration FLOAT file TEXT 60. Fonctions PHP
voidapm_get_slow_requests (void)
61. Futur
62. courrier lectronique; 63. commande paramtre. Backends alternatifs SQLite:
64. Memcache; 65. Tokyo Tyrant. 66. Appel contribution 67. Pinba
68. http://pinba.org/ 69. Liste de diffusion: [email_address] . 70. Ddi au monitoring de performance en temps rel. 71. Naissance en 2009. 72. Pourquoi ?
73. LAMPAXAP 74. Brique manquante dans le paysage PHP. 75. Collecte de statistiques de performance dans un environnement de production. + Pinba 76. Architecture 77. Dmo Pinba ! 78. Donnes envoyes
79. int request_count numro de la requte servie par le processus; 80. string server_name $_SERVER["SERVER_NAME"]; 81. string script_name $_SERVER["SCRIPT_NAME"]; 82. int document_size taille de la rponse; 83. int memory_peak pic d'allocation mmoire; 84. float request_time temps pass traiter la requte; 85. float ru_utime utilisation de ressource (utilisateur); 86. float ru_stime utilisation de ressource (systme); 87. array timers tableau de timers (optionnel). 88. Fonctions PHP
boolpinba_timer_stop (resource timer)
boolpinba_timers_stop (void)
boolpinba_script_name_set (string script_name)
89. Fonctions PHP
90. Exemple: 91. array(4) { ["value"]=>float(0.0213) ["tags"]=>array(1) { ["foo"]=>string(3) "bar" } ["started"]=>bool(true) ["data"]=>NULL } 92. Fonctions PHP
93. Exemple: array(9) { ["mem_peak_usage"]=> int(786432) ["req_time"]=> float(0.001529) ["ru_utime"]=> float(0) ["ru_stime"]=> float(0) ["req_count"]=> int(1) ["doc_size"]=> int(0) ["server_name"]=> string(7) "unknown" ["script_name"]=> string(1) "-" ["timers"]=> array(1) { [0]=> array(4) { [...] } } } 94. Tables
96. Tables de donnes brutes
97. buffer circulaire d'une taille donne; timer :
tag :
timertag :
98. Rapports
99. report_by_script_name; 100. report_by_server_name; 101. report_by_hostname; 102. report_by_server_and_script; 103. report_by_hostname_and_script; 104. report_by_hostname_and_server; 105. report_by_hostname_server_and_script. 106. Champs des rapports
107. req_per_sec; 108. req_time_total; 109. req_time_percent; 110. req_time_per_sec; 111. ru_utime_total; 112. ru_utime_percent; 113. ru_utime_per_sec;
114. ru_stime_percent; 115. ru_stime_per_sec; 116. traffic_total; 117. traffic_percent; 118. traffic_per_sec. 119. Rapports de tag(s)
Chacun d'eux tant disponibles en deux versions:
121. pour 2 tags. 122. Tag info pour 1 tag Donnes des timers regroupes par la valeur d'un tag spcifi. CREATE TABLE `tag_info_foo` ( `tag_value` varchar ( 32 ) DEFAULT NULL , `req_count` int ( 11 ) DEFAULT NULL , `hit_count` int ( 11 ) DEFAULT NULL , `timer_value` float DEFAULT NULL ) ENGINE = PINBA DEFAULT CHARSET =latin1COMMENT = 'tag_info:foo' 123. Tag info pour 2 tags Donnes des timers regroupes par la valeur de deux tags spcifis. CREATE TABLE `tag_info_foo_bar` ( `foo_value` varchar ( 32 ) DEFAULT NULL , `bar_value` varchar ( 32 ) DEFAULT NULL , `req_count` int ( 11 ) DEFAULT NULL , `hit_count` int ( 11 ) DEFAULT NULL , `timer_value` float DEFAULT NULL ) ENGINE = PINBA DEFAULT CHARSET =latin1COMMENT = 'tag2_info:foo,bar' 124. Tag report pour 1 tag Donnes des timers regroupes par script et par la valeur d'un tag spcifi. CREATE TABLE `tag_report_foo` ( `script_name` varchar ( 128 ) DEFAULT NULL , `tag_value` varchar ( 32 ) DEFAULT NULL , `req_count` int ( 11 ) DEFAULT NULL , `hit_count` int ( 11 ) DEFAULT NULL , `timer_value` float DEFAULT NULL ) ENGINE = PINBA DEFAULT CHARSET =latin1COMMENT = 'tag_report:foo' 125. Tag report pour 2 tags Donnes des timers regroupes par script et par la valeur de deux tags spcifis. CREATE TABLE `tag_report_foo_bar` ( `script_name` varchar ( 128 ) DEFAULT NULL , `tag1_value` varchar ( 32 ) DEFAULT NULL , `tag2_value` varchar ( 32 ) DEFAULT NULL , `req_count` int ( 11 ) DEFAULT NULL , `hit_count` int ( 11 ) DEFAULT NULL , `timer_value` float DEFAULT NULL ) ENGINE = PINBA DEFAULT CHARSET =latin1COMMENT = 'tag2_report:foo,bar' 126. Performance
127. invariable de la disponibilit de MySQL (rappel: protocole UDP). 128. Crdits
129. Alexey Rybak - design, ideas and lots of (useful) critics. 130. Special thanks to Sergey Frolovichev. 131. Current implementation is done by Antony Dovgal. 132. Questions ? Suggestions ?