У меня есть сайт Magento. Пользователей нет (максимум 2-3 за раз).
Наш сервер: ЦП: 2000 МГц, ОЗУ: 2048 МБ, жесткий диск: 50000 МБ.
Я установил ZendServerCE (apc + memcached + Zend Optimizer + Zend Data Cache). Я выключил memcached, потому что сайт загружен намного хуже. Я установил структуру плоского типа, переиндексировал и кэшировал данные в консоли администратора.
Так что у меня есть apc + Zend Optimizer + Zend Data Cache .
Первая проблема - я проверил во время выполнения, как работает диспетчеризация. Вызов start_session () занимает около 500-700 мс. Кажется, это не очень хороший результат. Почему так долго, я не знаю.
Я прочитал это: http://dev.mysql.com/doc/refman/5.0/en/server-system-variables.html#sysvar_key_buffer_size и выяснил оптимальные варианты для моего сервера.
В час:
Key_read_requests = 8887
Key_reads = 252
Key_write_request = 187
Key_writes = 146
Вы видите, что 252/8887> 0,01, но не слишком много. Это оптимальное значение, которое я когда-либо получал. Другие результаты начались с> 6.
Вот мой.cnf:
key_buffer = 48M
myisam_sort_buffer = 2M
sort_buffer = 2M
read_buffer_size = 2M
join_buffer = 2M
read_rnd_buffer = 2M
max_allowed_packet = 128M
thread_stack = 192K
thread_cache_size = 16
query_cache_type = 1
myisam-recover = BACKUP
max_connections = 50
table_cache = 256
#thread_concurrency = 10
query_cache_limit = 8M
query_cache_size = 98M
3. Memcached по какой-то причине не был хорош. Я выключил это. Но кеш данных Zend и оптимизатор Zend все еще работают.
4 APC кажется правильным. Загрузка контроллера в первый раз занимает 3-4 секунды (я установил die (), чтобы проверить это), и в первый раз это займет 1 - 1,3 секунды.
5 Через несколько минут я перезапустил MySQL, я получил хороший результат. Страницы загружались от 1,5 до 2,5 секунд. Но сейчас (через несколько часов) это занимает 6-10 секунд. Я не могу найти причину.
Итак, вы видите здесь неправильную конфигурацию? Может быть, мой сервер не подходит для magento?
ОБНОВЛЕНИЕ 1: около 600 категорий и 1000 продуктов сегодня и около 20000 категорий (для разных интернет-магазинов) и 1500-3000 продуктов в будущем.
Есть не так много атрибутов.
ОБНОВЛЕНИЕ 2 Я обнаружил, что консоль ssh работает слишком медленно. Я перезагрузил сервер, и теперь он работает быстро. значит у меня проблема с оперативной памятью. Недостаточно места.
Это начальный статус без Apache:
total used free shared buffers cached
Mem: 2048 600 1447
ОБНОВЛЕНИЕ 3 Я получил это. Теперь он загружается за 0,5-1,5 сек.
Вот конфигурация: MySQL
[mysqld]
key_buffer_size = 256M
tmp_table_size = 32M
max_heap_table_size = 32M
myisam_sort_buffer = 4M
sort_buffer = 4M
read_buffer_size = 4M
join_buffer = 4M
read_rnd_buffer = 4M
max_allowed_packet = 64M
thread_stack = 192K
thread_cache_size = 16
query_cache_type = 1
myisam-recover = BACKUP
max_connections = 20
table_cache = 1024
innodb_buffer_pool_size = 128M
query_cache_limit = 24M
query_cache_size = 256M
PHP
[apc]
apc.stat=1
apc.enabled=1
apc.optimization=0
apc.cache_by_default=1
apc.shm_segments=10
apc.shm_size=256M
apc.ttl=0
apc.user_ttl=0
apc.num_files_hint=10000
;apc.mmap_file_mask="/tmp/apc"
apc.max_file_size=5M
apc.enable_cli=1
apc.mmap_file_mask="/tmp/apc.XXXXXX"
apc.slam_defense=0
apc.user_entries_hint=10000
Все работает отлично, но остается один вопрос. APC показывает мне эту статистику:
Почему хиты такие маленькие? Любые идеи?
xhprof
и попытался получить визуализацию того, что занимает больше всего времени для загрузки. Это рабочий сервер под нагрузкой или просто для тестирования?