/ lamp

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 очень печалит.. В общем буду смотреть что будет дальше, и возможно этот пост будет дополнен..)


VDS LAMP memory optimization and tests
Share this

Subscribe to Somewhere Nowhere