VDS LAMP memory optimization and tests
Есть не очень мощьный VDS сервер с 1Gb памяти (наверное его единственный фатальный минус), на нем Centos 7, Apache, php5 (mod_php), mysql 5.7 и сайт на Opencart 2, дефолтные конфиги и.. в итоге постоянное падение mysql из-за нехватки памяти.. Причем занятой апачем памяти (около 800мб), и если не перезапуская апач перезапустить mysql, то он будет вылетать сразу при старте.. При перезапуске apache память очищается и все работает.. какое-то время..)
Первое что сделал – отключил некоторые на мой взгляд не нужные в этой конфигурации модули:
<br></br>
#LoadModule actions_module modules/mod_actions.so<br></br>
#LoadModule authn_anon_module modules/mod_authn_anon.so<br></br>
#LoadModule authn_dbd_module modules/mod_authn_dbd.so<br></br>
#LoadModule authn_dbm_module modules/mod_authn_dbm.so<br></br>
#LoadModule authn_socache_module modules/mod_authn_socache.so<br></br>
#LoadModule authz_dbd_module modules/mod_authz_dbd.so<br></br>
#LoadModule authz_dbm_module modules/mod_authz_dbm.so<br></br>
#LoadModule authz_owner_module modules/mod_authz_owner.so<br></br>
#LoadModule autoindex_module modules/mod_autoindex.so<br></br>
#LoadModule env_module modules/mod_env.so<br></br>
#LoadModule ext_filter_module modules/mod_ext_filter.so<br></br>
#LoadModule info_module modules/mod_info.so<br></br>
#LoadModule mime_magic_module modules/mod_mime_magic.so<br></br>
#LoadModule negotiation_module modules/mod_negotiation.so<br></br>
#LoadModule status_module modules/mod_status.so<br></br>
#LoadModule buffer_module modules/mod_buffer.so<br></br>
#LoadModule watchdog_module modules/mod_watchdog.so<br></br>
#LoadModule heartbeat_module modules/mod_heartbeat.so<br></br>
#LoadModule heartmonitor_module modules/mod_heartmonitor.so<br></br>
#LoadModule usertrack_module modules/mod_usertrack.so<br></br>
#LoadModule dialup_module modules/mod_dialup.so<br></br>
#LoadModule charset_lite_module modules/mod_charset_lite.so<br></br>
#LoadModule log_debug_module modules/mod_log_debug.so<br></br>
#LoadModule ratelimit_module modules/mod_ratelimit.so<br></br>
#LoadModule reflector_module modules/mod_reflector.so<br></br>
#LoadModule request_module modules/mod_request.so<br></br>
#LoadModule sed_module modules/mod_sed.so<br></br>
#LoadModule speling_module modules/mod_speling.so<br></br>```
Потребление в целом уменьшилось, но падения продолжались (я даже не обращал внимания так ли часто как раньше).
Далее наступила очередь mysql, оптимизации с тестами проводил не сразу, но вот итоговый конфиг:
explicit_defaults_for_timestamp=1
default-storage-engine=MyISAM
default-tmp-storage-engine=MyISAM
skip-name-resolve=1
optimizations
max_connections=70
max_user_connections=30
wait_timeout=10
interactive_timeout=50
slow_query_log = 0
long_query_time= 5
bind-address = 127.0.0.1
performance_schema = OFF
```
и заодно перевел php заместо модуля apache, в php-mpm:
/etc/httpd/conf.d/php.conf
<br></br><filesmatch><br></br>
# SetHandler application/x-httpd-php<br></br>
SetHandler "proxy:fcgi://127.0.0.1:9000"<br></br></filesmatch><br></br>```
это позволило достаточно серьезно снизить нагрузку на память:
total used free shared buff/cache available
Mem: 1024 385 314 2 323 492
Swap: 0 0 0
```
Это показатели после тестирования.
Ну а теперь сами тесты:
– встроенный тест апача ab -n 500 -c 20 http://-my_domain-/index.php
показал такой результат
<br></br>
Server Software: Apache<br></br>
Server Hostname: <my_domain><br></br>
Server Port: 80</my_domain>```
Document Path: /index.php
Document Length: 35047 bytes
Concurrency Level: 20
Time taken for tests: 195.202 seconds
Complete requests: 500
Failed requests: 0
Total transferred: 17798000 bytes
HTML transferred: 17523500 bytes
Requests per second: 2.56 [#/sec] (mean)
Time per request: 7808.099 [ms] (mean)
Time per request: 390.405 [ms] (mean, across all concurrent requests)
Transfer rate: 89.04 [Kbytes/sec] received
Connection Times (ms)
min mean[+/-sd] median max
Connect: 16 23 134.2 17 3017
Processing: 4017 7725 969.1 7671 14196
Waiting: 3998 7706 969.2 7653 14178
Total: 4034 7748 981.5 7687 14215
Percentage of the requests served within a certain time (ms)
50% 7687
66% 7822
75% 7931
80% 8001
90% 8311
95% 9616
98% 10620
99% 11547
100% 14215 (longest request)
и второй тест:
– loadstorm.com в его бесплатной версии на 10 одновременных “пользователей” на сайте..
результаты
[![screen-shot-2017-01-10-at-16-55-58](http://blog.xcoders.ru/wp-content/uploads/2017/01/Screen-Shot-2017-01-10-at-16.55.58-300x78.png)](http://blog.xcoders.ru/wp-content/uploads/2017/01/Screen-Shot-2017-01-10-at-16.55.58.png)
[![screen-shot-2017-01-10-at-16-56-08](http://blog.xcoders.ru/wp-content/uploads/2017/01/Screen-Shot-2017-01-10-at-16.56.08-300x72.png)](http://blog.xcoders.ru/wp-content/uploads/2017/01/Screen-Shot-2017-01-10-at-16.56.08.png)
Скажу честно что результаты времени генерации по 800мс мне не очень понравились, но то что памяти стало потреблять намного меньше и не валится по каждому чиху это конечно плюс.. Конечно есть еще вариант nginx, но мне его синтаксис конфигов и невозможностью (необходимость переписывать) .htaccess очень печалит.. В общем буду смотреть что будет дальше, и возможно этот пост будет дополнен..)
Subscribe to Somewhere Nowhere
Get the latest posts delivered right to your inbox