Mam serwer MySQL w Ameryce Północnej (korzystający z Amazon RDS) i replikę odczytu. Mam też replikę do odczytu dla nowego regionu - Australii.
Serwer australijski jest brutalnie wolny z powodu dynamicznej natury Joomla, która odczytuje główny serwer DB w N.America. Próbowałem użyć proxy mysql do tego, aby podzielić odczyt / zapis, ale to nie jest długoterminowe rozwiązanie. Serwer proxy MySQL wydaje się być faktycznie martwy.
Jakie inne opcje mam?
Jeśli używasz całkiem nowej wersji PHP, prawdopodobnie używasz sterownika php mysqlnd. http://us3.php.net/manual/en/book.mysqlnd.php
Mysqlnd ma niestandardowy interfejs API wtyczki i może działać w ten sam sposób co proxy mysql - na przykład http://pecl.php.net/package/mysqlnd_ms to wtyczka, która dzieli odczyty i zapisy i miała ostatnią oficjalną wersję 9/2013
Pamiętaj też, że Joomla zawsze zapisuje do tabeli sesji. Używanie memcache lub apc po prostu przechowuje dane sesji w pamięci podręcznej - nie metadane sesji.
Możesz uzyskać ten sam wzrost wydajności, upuszczając tabelę #_sessions i odtwarzając ją ponownie za pomocą aparatu danych Memory zamiast innodb lub myisam.
źródło
Każda strona wygenerowana przez Joomla będzie musiała pisać do tabeli sesji.
Sugerowałbym więc użycie memcache lub apc do zarządzania sesją. Powinno to pomóc w osiągnięciu zerowego zapisu do bazy danych, dlatego replika odczytu będzie wystarczająca dla większości stron.
źródło
Inną opcją poprawy prędkości byłoby umieszczenie Nginx przed nim jako odwrotnego proxy. Spowodowałoby to ograniczenie dostępu do bazy danych, ponieważ wspólne strony nigdy nie trafiłyby do Joomla i mysql nie mógł znaleźć konfiguracji proxy, ale są to ustawienia podstawowe
źródło