2013-05-23 12 views
5

Mam instalację MediaWiki tylko dla zalogowanych użytkowników, która jest bardzo powolna (około 2,5 sekundy na żądanie). Przeszedłem przez wszystkie etapy buforowania i optymalizacji, które znalazłem. Używam APC z domyślną konfiguracją, a ponieważ nie znalazłem żadnych ulepszeń, uruchomiłem profilowanie mediawiki, ale nie w pełni go nie obsługuję.Interpretacja wyjściowa profilowania MediaWiki

Dane wyjściowe z forceprofile wyglądają następująco.

100.00% 2.475774  1 - -total 
90.51% 2.240709  1 - Setup.php 
89.56% 2.217199  1 - Setup.php-session 
88.85% 2.199760 163 - LoadBalancer::getConnection 
88.64% 2.194557 163 - LoadBalancer::openConnection 
88.43% 2.189371  2 - DatabaseMysql::open 
88.38% 2.188186  2 - dbconnect-localhost 
    8.02% 0.198664  1 - MediaWiki::main 
    6.15% 0.152351  1 - MediaWiki::finalCleanup 
    5.25% 0.129948  1 - OutputPage::output 
    5.21% 0.128936  1 - Output-skin 
    5.20% 0.128861  1 - SkinTemplate::outputPage 
    3.28% 0.081173 186 - DatabaseBase::query 
    2.64% 0.065307  1 - SkinTemplate::outputPage-stuff5 
    1.99% 0.049177  4 - query: COMMIT 
    1.82% 0.044994  1 - MediaWiki::performRequest 
    1.67% 0.041237  1 - MediaWiki::performAction 
    1.66% 0.041093  1 - Article::view 
    1.56% 0.038637 108 - LocalisationCache::getSubitem-load 
    1.41% 0.034958  1 - SkinTemplate::outputPage-execute 
    1.09% 0.026959  1 - Skin::buildSidebar 
    1.04% 0.025770  41 - Linker::titleAttrib 
    rest below 1% 

wyjście w dzienniku profilowania wygląda:

Profiling data 
    Name                   Calls   Total   Each    %  Mem 
    -total                   1  2530.972  2530.972  100.000% 5801152 ( 2530.972 -  2530.972) [0] 
    Setup.php                  1  2269.201  2269.201  89.657% 1230737 ( 2269.201 -  2269.201) [65] 
    Setup.php-session                1  2246.935  2246.935  88.778% 312683 ( 2246.935 -  2246.935) [26] 
    LoadBalancer::getConnection             166  2213.220  13.333  87.445% 292024 (  0.005 -  1117.286) [178] 
    LoadBalancer::openConnection             166  2211.142  13.320  87.363% 286279 (  0.001 -  1117.276) [12] 
    DatabaseMysql::open                2  2208.200  1104.100  87.247%  13050 ( 1092.796 -  1115.404) [10] 
    dbconnect-localhost                2  2207.259  1103.630  87.210%  12544 ( 1092.338 -  1114.922) [0] 
    MediaWiki::main                 1  222.392  222.392   8.787% 2675660 (  222.392 -  222.392) [1486] 
    MediaWiki::finalCleanup               1  134.699  134.699   5.322% 1284487 (  134.699 -  134.699) [981] 
    DatabaseBase::query               202  117.272   0.581   4.633% 342809 (  0.079 -  32.658) [206] 
    OutputPage::output                1  108.740  108.740   4.296% 1280174 (  108.740 -  108.740) [956] 
    Output-skin                  1  103.328  103.328   4.083% 1087262 (  103.328 -  103.328) [953] 
    SkinTemplate::outputPage               1  103.267  103.267   4.080% 1131051 (  103.267 -  103.267) [952] 
    query: COMMIT                 7  87.476  12.497   3.456%  432 (  6.541 -  32.651) [0] 
    MediaWiki::performRequest              1  85.917  85.917   3.395% 1272664 (  85.917 -  85.917) [503] 
    MediaWiki::performAction               1  81.878  81.878   3.235% 1184620 (  81.878 -  81.878) [483] 
    Article::view                 1  59.397  59.397   2.347% 679673 (  59.397 -  59.397) [258] 
    SkinTemplate::outputPage-stuff5             1  55.888  55.888   2.208% 456139 (  55.888 -  55.888) [400] 
    LocalisationCache::getSubitem-load            107  28.478   0.266   1.125%  54868 (  0.240 -  0.468) [428] 
    -overhead-total                1570  27.168   0.017   1.073% 1076064 (  27.168 -  27.168) [1570] 
    SkinTemplate::outputPage-execute             1  26.111  26.111   1.032%  30494 (  26.111 -  26.111) [398] 
    DeferredUpdates::doUpdates              1  25.015  25.015   0.988%  377 (  25.015 -  25.015) [16] 
    Skin::buildSidebar                1  21.318  21.318   0.842%  81176 (  21.318 -  21.318) [218] 
    ParserCache::get                 1  19.755  19.755   0.781%  1585 (  19.755 -  19.755) [22] 
    DynamicSidebar::modifySidebar             1  18.910  18.910   0.747%  69284 (  18.910 -  18.910) [192] 
    Linker::titleAttrib                40  18.445   0.461   0.729%  76664 (  0.041 -  1.041) [313] 
    CategoryViewer::getHTML               1  17.666  17.666   0.698% 244568 (  17.666 -  17.666) [218] 
    query: SELECT lc_value FROM `wiki_lNn_cache` WHERE lc_lang = 'X' LIMIT N  129  15.079   0.117   0.596% 240757 (  0.086 -  0.513) [2] 
    LocalisationCache::getItem-load             16  13.923   0.870   0.550% 272404 (  0.259 -  5.256) [100] 
    SkinTemplate::outputPage-stuff4             1  11.899  11.899   0.470% 330753 (  11.899 -  11.899) [62] 
    Setup.php-globals                1  11.758  11.758   0.465% 567318 (  11.758 -  11.758) [24] 
    -overhead-internal               1570  11.512   0.007   0.455% 351680 (  0.006 -  0.046) [0] 
    ResourceLoader::makeModuleResponse            2  11.067   5.533   0.437% 238877 (  4.679 -  6.388) [36] 

Nie wiem dlaczego mój setup.php, loadbalancer i db są to wolno? Czy ktoś doradza, aby poprawić wydajność tych rzeczy.

edit: zmieniłem z powrotem do konfiguracji bez buforowania i wyjście profilowania wygląda następująco:

Profiling data 
Name                   Calls   Total   Each    %  Mem 
-total                   1  2264.308  2264.308  100.000% 18818800 ( 2264.308 -  2264.308) [0] 
LoadBalancer::getConnection             171  1914.577  11.196  84.555% 873694 (  0.010 -  969.956) [183] 
LoadBalancer::openConnection             171  1912.571  11.185  84.466% 863369 (  0.002 -  969.939) [12] 
DatabaseMysql::open                2  1904.139  952.070  84.094%  13043 (  941.427 -  962.713) [10] 
dbconnect-localhost                2  1903.117  951.559  84.049%  12576 (  940.917 -  962.201) [0] 
MediaWiki::main                 1  1168.946  1168.946  51.625% 8339081 ( 1168.946 -  1168.946) [1546] 
MediaWiki::performRequest              1  1052.551  1052.551  46.484% 4786767 ( 1052.551 -  1052.551) [728] 
SpecialPageFactory::executePath             1  1047.566  1047.566  46.264% 4567696 ( 1047.566 -  1047.566) [717] 
Setup.php                  1  1045.216  1045.216  46.160% 7760889 ( 1045.216 -  1045.216) [55] 
Special:Version                 1  1044.117  1044.117  46.112% 4018885 ( 1044.117 -  1044.117) [716] 
Setup.php-globals                1  1011.005  1011.005  44.650% 4713595 ( 1011.005 -  1011.005) [30] 
LocalisationCache::getItem-load             15  990.768  66.051  43.756% 1424628 (  0.265 -  979.699) [102] 
MessageCache::load                1  943.255  943.255  41.658%  14271 (  943.255 -  943.255) [14] 
MessageCache::load-fromcache              1  942.883  942.883  41.641%  13740 (  942.883 -  942.883) [13] 
MediaWiki::finalCleanup               1  115.499  115.499   5.101% 3464276 (  115.499 -  115.499) [816] 
OutputPage::output                1  113.857  113.857   5.028% 3377273 (  113.857 -  113.857) [809] 
Output-skin                  1  102.706  102.706   4.536% 2424168 (  102.706 -  102.706) [806] 
SkinTemplate::outputPage               1  102.656  102.656   4.534% 2464206 (  102.656 -  102.656) [805] 
SkinTemplate::outputPage-stuff5             1  58.550  58.550   2.586% 1731893 (  58.550 -  58.550) [346] 

Odpowiedz

1

Z danych profilowania pan pisał, że to oczywiste, że winowajcą jest połączenie DB otwarte który jest brutalnie powolna, zapytania same wydają się działać wystarczająco szybko. Dlaczego tak się dzieje jest to ciekawe pytanie:

  • Nie wspominając jeśli wiki jest już publiczny i odbiera ruchu lub jesteś jego jedyną ATM użytkownika?
  • Czy MySQL jest już przeciążony na powodów niezwiązanych z MediaWiki (np. Ponieważ jest hostem współdzielonym)?
  • Być może Twój MySQL's max_connections jest zbyt niski i jest nieaktywny , podczas gdy klienci desperacko oczekują na połączenie w linii?
+0

Cześć, dziękuję za odpowiedź. Wiki jest obecnie używany przez maksymalnie 2-5 użytkowników. Instancja MySQL jest bezczynna przez większość czasu, ale jest hostem współdzielonym. Sprawdzam max_connections, gdy jestem z powrotem w biurze, dzięki za podpowiedź. – Georg

+0

@ Georg, czy to działa? – Nemo

+0

Niestety nie, pozostał tak wolny jak poprzednio. później przełączyliśmy się na używanie Confluence zamiast MediaWiki – Georg