Завантаження сторінки Magento займає занадто багато часу


10

У мене є веб-сайт magento. Немає користувачів (максимум 2-3 за раз).

Наш сервер: CPU: 2000MHz RAM: 2048Mb HDD: 50000Mb.

Я встановив ZendServerCE (apc + memcached + Zend Optimizer + Zend Кеш даних). Я вимкнувся, тому що веб-сайт завантажений набагато гірше. Я встановив структуру плоского типу, переіндексований та кешований дані в консолі адміністратора.

Тож у мене є apc + Zend Optimizer + Zend Кеш даних .

  1. Перша проблема - це я перевірив час виконання, як працює диспетчер. Виклик start_session () займає близько 500-700 мс. Здається, це не гарний результат. Чому так довго, я не знаю.

  2. Я прочитав це: 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. Спогад чомусь був недобрий. Я його вимкнув. Але кеш даних кеш і оптимізатор zend все ще працюють.

4. APC здається правильним. Для завантаження контролера дія займає 3-4 секунди вперше (я встановлюю die () там, щоб перевірити це), і в перший раз потрібно 1 - 1,3 секунди.

5. Через кілька хвилин я перезапустив mysql, отримав хороший результат. Сторінки завантажувались від 1,5 до 2,5 секунд. Але зараз (через кілька годин) потрібно 6-10 секунд. Я не можу знайти причину.

Отже, ви бачите тут некоректну конфігурацію? Можливо, мій сервер не підходить для магенто?

ОНОВЛЕННЯ 1: близько 600 категорій та 1000 товарів сьогодні та близько 20000 категорій (для різних веб-магазинів) та 1500-3000 продуктів у майбутньому.

Атрибутів не так багато.

ОНОВЛЕННЯ 2 Я помітив, що консоль ssh працює занадто повільно. Я перезавантажив сервер і зараз він працює швидко. це означає, що у мене проблема з ОЗП. Не вистачає місця.

Це початковий статус у апачі:

             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 показує мені цю статистику: введіть тут опис зображення

Чому хіти такі маленькі? Будь-які ідеї?


Було б добре, якщо ви залишите кілька рядків про вашу установку Magneto (наприклад, розмір каталогу, модифікації, розширення тощо).
user487772

Неможливо, щоб хтось міг просто опублікувати ряд конфігураційних файлів, щоб ви могли правильно налаштувати ваш сервер. Є десятки файлів; конкретні версії змін програмного забезпечення та системного рівня, які необхідно внести, щоб найкраще використовувати наявне обладнання.
Бен Лессані - Сонассі

Ознайомтесь, будь ласка, чому ви встановили сімейство
Ентоні

@Tim Я оновив запитання
Ентоні

2
Я б завітав xhprofі спробував зробити візуалізацію того, що потребує часу для завантаження. Це виробничий сервер під навантаженням чи просто для тестування?
philwinkle

Відповіді:


6

Оскільки питання, здається, не дуже магентоцентричне, ось моя не дуже магентоцентрична відповідь.

Кешування OpCode та оптимізація БД - це хороший спосіб прискорити веб-додатки певною мірою. Але користь буде відносно помірною. Щоб отримати реальний приріст швидкості, слід розглянути можливість використання кешу лаку. Це відкритий код, простий у налаштуванні та легко інтегрується з magento завдяки вільно доступним модулям для magento.

Також є хороша стаття з коротким оглядом того, як це працює: http://www.fabrizio-branca.de/make-your-magento-store-fly-using-varnish.html

Особливо врахуйте діаграму:

сторінок / секунду


4
Лак чудовий, якщо у вас вже є швидкий магазин і хочете компенсувати ресурси. Але його ніколи не слід використовувати, щоб приховати факт, що магазин повільний. Сторінки все-таки потрібно генерувати в першу чергу - тому вони завжди будуть 6-10-ти разів завантажувати сторінки, незалежно.
Бен Лессані - Сонассі

Здається, це було б схоже на згадку, яку я використовував раніше. Я думаю, що я роблю неправильно у властивостях mysql або сервер занадто слабкий
Ентоні

2

Якщо ваш бізнес покладається на ваш успішний хостинг, чому ви намагаєтесь керувати сервером без досвіду.

Ви, безумовно, отримаєте користь, просто звернувшись до спеціаліста-Magento господаря та дозволити їм піклуватися про системне адміністрування, в той час як ви робите те, у чому добре, керуючи своїм магазином.

Дивлячись на свої характеристики, у вас недостатньо оперативної пам’яті, щоб спробувати запустити магазин Magento. Є безліч подібних питань, як ваше,

https://serverfault.com/a/400748/113375 .
/server/430565/magento-hosting-on-a-budget


Тому що наш клієнт має обмежений бюджет. Я повинен заплатити за хост magento більше 50 євро за гору. У нас є ліміт на хост 150-200 євро на рік-) У будь-якому випадку дякую за посилання
Ентоні

1
Тоді клієнт може розраховувати на прибуток ~ 20-40 000 доларів / рік із 100% оптимізацією (хостинг становить 0,5-1% доходу). Тут багато людей, які можуть надати вам усі деталі та технічні налаштування, але ви намагаєтесь зробити все надто мало. Ви можете змусити його працювати з технічної сторони, але з боку бізнесу вона випаде на рівну. Якщо ваші динамічні завантаження сторінок (без fpc) не перевищують 3, ви втрачаєте 56% відвідувачів, ідеально орієнтуючись на 1-2s - конверсії Google та відвідувачів покарають сайт інакше - жорсткий дзвінок. Враховуючи ситуацію, 95-99% шансів> завантаження сторінок 3s та / або веб-сайт підпадає під дію.

1

Це фізичне обладнання або віртуальний приватний сервер? Ви, ймовірно, повинні перемістити свою базу даних на власний виділений сервер. Це також надає вам перевагу того, що ви зможете визначити, чи пов'язані ваші проблеми з швидкістю Apache / PHP або MySQL.

повільність start_session () означає, що ви, ймовірно, страждаєте від недостатнього обладнання. Я не знаю, чи означає ваш вибір технології, що сеанси зберігаються на диску або в оперативній пам’яті, але 500-700 мс майже напевно означає, що вони зберігаються на диску, і у вас виникають проблеми з продуктивністю вводу-виводу - можливо, тому що ваша база даних заміна на диск, тому що він не поміститься в оперативній пам'яті ... але це все міркування.

Удачі!


Дякую за вашу відповідь! Я використовую VPS. Це не дуже підходить для магенто, але я маю завдання оптимізувати його в цій області. Чи можна перевірити, чи заміна бази даних на диск?
Ентоні

1
free -mпідкаже, чи взагалі ви використовуєте swap, і найновіші версії topкоманди підкажуть, чи натисніть O і P, щоб замовити за допомогою swap. В іншому випадку вам доведеться повернутися до використання ідентифікатора процесу mysqld з чимось подібним: awk '/^Swap:/ { SWAP+=$2 } END { print SWAP" kB" }' /proc/$(pidof mysqld)/smaps Все описане тут: dbasquare.com/2012/04/10/…
Ральф Тіс

1

Очевидно, немає способу показати вам «працюючу конфігурацію», яка підвищить вашу ефективність, але Magento насправді намагається зробити щось подібне і розміщує приклад висококонфігурованого стека LAMP у своїх робочих роботах. Методика цих матеріалів застосовується до CE та EE. Я настійно рекомендую повністю прочитати обидві статті, оскільки ідеї, запропоновані там, перегукуються з цією ниткою, і надали дуже конкретні рекомендації Magento безпосередньо з джерела: http://www.magentocommerce.com/whitepaper/


1

Конфігурація

ZendFramework (оптимізатор zend та кеш даних zend) + APC + Memcache + Nginx

працює ідеально для мене.

більше 30 впевнених користувачів можуть завантажувати сторінку менше, ніж за одну секунду (~ 0.4s-0.6s)

Я встановив nginx на 80 порту (як проксі) і apache на 8080.

Дякуємо @MattSchweers за посилання. Я забув про це. Це допомагає мені налаштувати MySQL


нема проблем! Насправді я використовував ці підказки для того, щоб на цьому тижні налаштувати MySQL - добре працював.

1

на мій досвід, litespeed сервер збільшує продуктивність в 2 рази на суму $ 32 / місяць ліцензії 1cpu. Мені сказали, що вам потрібна лише ліцензія на 1cpu, оскільки php працює окремо в лідесковій швидкості.


Веб-сервер не є вузьким місцем. PHP, перехід на Litespeed взагалі нічого не змінить.
Бен Лессані - Сонассі

Хоча я, як правило, погоджуюся з тим, що Litespeed є чудовим вибором для Magento, але ця відповідь, ймовірно, не виправить проблему, поставлену ОП, і це поза його заявленим бюджетом.
Престон

0

Якщо у вас є кілька веб-магазинів і декількох категорій, Magento по суті створює різновид продуктового продукту записів для всіх веб-магазинів, категорій і продуктів, що спричинить значне навантаження на Базу даних. Ваші недоліки APC досить високі, і вам потрібно буде вивчити це. Однак, навіть якщо ви виправите APC, я думаю, що проблема з продуктивністю може зберігатися, особливо якщо ваш трафік збільшується. Для прискорення вашого веб-сайту вам потрібно буде встановити кеш-оп, лак або кеш на повній сторінці (якщо Enterprise Edition).

Magento багато читає записів у БД, тож ви також можете спробувати, щоб ваш MySQl в режимі реплікації Master Slave мав усі зчитування магенто з підлеглого, тоді як записи трапляються у ведучого.


0

Я б спробував змінити наступні параметри APC і побачити, чи підбираються хіти.

apc.shm_segments 1

apc.ttl 7200

apc.user_ttl 7200

На прямому веб-сайті ви також можете використовувати наступне.

apc.stat 0

Це зупинить APC, щоб перевірити, чи файл змінився з моменту останньої компіляції, що дає приємне збільшення швидкості. Просто не забудьте очистити кеш APC під час редагування файлів PHP.


0

Пара інших думок. Можливо, ви захочете збільшити розмір innodb_buffer_pool_size, 128М може бути трохи низьким, і навіть невеликі сайти можуть швидко зростати. Змінна диктує, скільки ваших даних зберігається в пам'яті.

Magento використовує це для всіх своїх таблиць, включаючи таблиці журналів, які швидко ростуть. Ви хочете переконатися, що ви обмежите кількість цих даних, які ви зберігаєте. Запуск "php shell / log.php --status" з командного рядка дасть вам уявлення про те, де ви знаходитесь і чи не виходить з-під руки. Також є варіанти очищення журнальних таблиць за допомогою нього.

2 Гб оперативної пам’яті не так вже й багато для роботи, тому вам потрібно бути обережними, де ви виділите свою пам’ять.

Також кеш-пам’ятник на повній сторінці може допомогти зберегти каталог вашого веб-сайту та сторінки швидкої завантаження. Ви можете побачити наше тут: http://ecommerce.brimllc.com/full-page-cache-magento.html

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.