26.10.2021 09:51
1
Zdravím,
mám VPS s 1 CPU a 2GB RAM. Zatímco procesor je většinu času pod 10%, tak RAM je zaplněna téměř celá a dokonce dochází i ke swapu. Čas od času mi kvůli tomu spadne mysql. Firma u které VPS provozuji mi tvrdí, že jediné řešení je navýšit RAM o 1GB (což vyjde zhruba na 1000 Kč ročně). Když ale čtu na jakých parametrech VPS provozovat, tak všude vidím, že i 1GB je zcela dostačující. Přitom na webech, které tam mám (za řeč stojí jen jeden) žádná velká návštěvnost není a sql dotazy jsou optimalizované.
Dá se nějak chod VPS zoptimalizovat?
26.10.2021 10:37
2
U koho to máš?
26.10.2021 10:45
3
Nechci zbytečně rozbíhat nějaký flame, když je možné, že je to nějakým mým nastavením, a tak jméno firmy alespoň zatím zmiňovat nebudu. Spíš mi jde o to, zda je 2GB dostačující a jak zjistit v čem je problém a následně to nastavit. Pokud je 2GB málo, což jsem se zatím nikde nedočet, rád si 1GB přikoupím, ale nechce se mi zbytečně platit víc, když už teď platím téměř 4000 za rok.
26.10.2021 11:14
4
Já ti jen mužů říci že 2GB RAM by mělo být dostačující. Mám návštěvnost 40k/den a využívám 1.5-2GB RAM Max. Pokud používáš nějakou hostingovou společnost která má slušné reference tak je malá pravděpodobnost že to je u nich a asi to bude opravdu jen nějakým nastavením které tam máš špatně :)
Pokud máš nějaký Wordpress tak mrkni na pluginy, možná nějaký z nich nefunguje správně.
26.10.2021 11:15
5
Ono záleží co na tom provozuješ, na většinu WP webů to asi dostačující bude.
a) může to být problém hostingu - máš takovou návštěvnost/vytížení že to už nestačí
b) problém v nastavení webu - špatně postavená DB/neoptimalizované dotazy/cache atd. atd.

Bez pohledu "dovnitř" to nikdo nedokáže říci.
26.10.2021 11:16
6
Vosička: Wordpress vubec nepoužívám. Pomohl by nějaký výpis kde by se dalo vyčíst, čím to je? Rád je sem postnu.

---------- Příspěvek doplněn 26.10.2021 v 10:19 ----------

Původně odeslal Vít Michalek
Ono záleží co na tom provozuješ, na většinu WP webů to asi dostačující bude.
a) může to být problém hostingu - máš takovou návštěvnost/vytížení že to už nestačí
b) problém v nastavení webu - špatně postavená DB/neoptimalizované dotazy/cache atd. atd.

Bez pohledu "dovnitř" to nikdo nedokáže říci.
a) návštěvnost velká není
b) dotazy jsou optimalizované (na levném hostingu k problémům nedocházelo)

Je něco co můžu nasdílet?
26.10.2021 11:20
7
slow_log v mysql, ale k tomu asi nemáš na VPS přístup ;)
Obecně pokud tam máš mysql a používaš třeba PHPmyAdmin tak je tam poradce, který říká co by se mohlo zlepšit (Stav serveru -> poradce)
26.10.2021 11:22
8
4000 Kč/rok je za tak nízkou konfiguraci masakr.

Mrkni sem: https://www.hukot.net/cs/linux-vps/ - Mě na tom jede cca 15 webů, s celkovou návštěvností cca 30k denně, a ročně zaplatim jen 1 680 Kč.

VPS-L04G
za
140 Kč/m

40 GB SSD

4 GB RAM
2 CPU Core
Neomezený přenos dat
Full root nebo managed
SLA 99.9 %
Dodání: 60 s
26.10.2021 11:25
9
Původně odeslal gostrider
4000 Kč/rok je za tak nízkou konfiguraci masakr.

Mrkni sem: https://www.hukot.net/cs/linux-vps/ - Mě na tom jede cca 15 webů, s celkovou návštěvností cca 30k denně, a ročně zaplatim jen 1 680 Kč.

VPS-L04G
za
140 Kč/m

40 GB SSD

4 GB RAM
2 CPU Core
Neomezený přenos dat
Full root nebo managed
SLA 99.9 %
Dodání: 60 s
Třeba potřebuje windowsácký, tam už se to trochu prodraží. Celkově nám dal strašně málo informací.
26.10.2021 11:27
10
Původně odeslal Vít Michalek
slow_log v mysql, ale k tomu asi nemáš na VPS přístup ;)
Obecně pokud tam máš mysql a používaš třeba PHPmyAdmin tak je tam poradce, který říká co by se mohlo zlepšit (Stav serveru -> poradce)
Jsou tam takové obecné rady a na zapnutí nepř. slow logu nemám privilegia. Je tam něco zásadního?

Přiložené miniatury
26.10.2021 11:30
11
Původně odeslal tomasr
Jsou tam takové obecné rady a na zapnutí nepř. slow logu nemám privilegia. Je tam něco zásadního?
Ty obecné rady tam hned v několika případech poukazují na fakt, že ty SQL dotazy nejsou zrovna dobře optimalizované. Ale jistě mne nějaký větší databázový odborník opraví :-)
26.10.2021 11:31
12
Původně odeslal gostrider
4000 Kč/rok je za tak nízkou konfiguraci masakr.

Mrkni sem: https://www.hukot.net/cs/linux-vps/ - Mě na tom jede cca 15 webů, s celkovou návštěvností cca 30k denně, a ročně zaplatim jen  1 680 Kč.

VPS-L04G
za
140 Kč/m

40 GB SSD

4 GB RAM
2 CPU Core
Neomezený přenos dat
Full root nebo managed
SLA 99.9 %
Dodání: 60 s
To je asi tím, že tam mám i administraci, kde můžu všechno spravovat aniž bych musel něco ručně nastavovat v konfigurákách. Je tam i support v ceně, ikdyž ten mi v tomhle moc neporadil.

---------- Příspěvek doplněn 26.10.2021 v 10:32 ----------

Původně odeslal Tomáš Maňhal
Třeba potřebuje windowsácký, tam už se to trochu prodraží. Celkově nám dal strašně málo informací.
Omlouvám se, rád poskytnu jakékoliv informace ohledně nastaveni. Jde o linuxový server.

---------- Příspěvek doplněn 26.10.2021 v 10:36 ----------

Původně odeslal Tomáš Maňhal
Ty obecné rady tam hned v několika případech poukazují na fakt, že ty SQL dotazy nejsou zrovna dobře optimalizované. Ale jistě mne nějaký větší databázový odborník opraví :-)
Já to z toho bohužel vyčíst nedokáži. Když se dívám na jednotlivé dotazy, tak tam v optimalizaci problém nevidím. Všechny dotazy měřím skrz profiler v aplikaci. V těch obecných radách není nic čeho bych se moh chytit. Je pravda, že rádce v phpmyadmin jsem zkoušel poprvé, tak nevím co se tam běžně píše u zoptimalizovaných databází.

Spíš se mi zdá problém s cache dotazů. Mohlo by to pomoci?
26.10.2021 11:43
13
Původně odeslal tomasr
To je asi tím, že tam mám i administraci, kde můžu všechno spravovat aniž bych musel něco ručně nastavovat v konfigurákách. Je tam i support v ceně, ikdyž ten mi v tomhle moc neporadil.
To asi kdyby jsi dal více informací, tak Ti třeba i někdo pomůže!

OMG

Moc se Ti omlouvám za to, že jsem Ti chtěl ušetřit peníze!!
26.10.2021 11:53
14
Jen se pozeptám, je na disku dostatek místa?
26.10.2021 11:55
15
Původně odeslal gostrider
To asi kdyby jsi dal více informací, tak Ti třeba i někdo pomůže!

OMG

Moc se Ti omlouvám za to, že jsem Ti chtěl ušetřit peníze!!
Však já je rad poskytnu, napiš co chceš a já to sem postnu. Vážím si pomoci od kohokoliv a nevím kam přesně tím míříš. Citoval si můj popis toho o jakou službu jde. Nehodnotím jestli je to lepší či horší než nějaká jiná služba. Jde mi o zjištění v čem je problém u mého stávajícího řešení a zda u něj do budoucna zůstat.
26.10.2021 11:55
16
Z pohledu dodavatele služeb je jednodušší navýšit RAM a to proto, že nevi co tam provozujes a ladit to zabere čas.

Pokud máš root pristum sniz parametry MySQL a pak uvidis.... můžeš ladit i aplikaci ladit, ale paradoxně narazil opět na to, že levněji vyjde dokoupit hrubý výkon.
26.10.2021 11:57
17
Původně odeslal Tomina10
Jen se pozeptám, je na disku dostatek místa?
Ano na disku je necelých 6 GB místa. Swap je maximálně ve stovkách MB. Jediné co permanentně dochází je RAM.

---------- Příspěvek doplněn 26.10.2021 v 11:00 ----------

Původně odeslal josef.jebavy
Z pohledu dodavatele služeb je jednodušší navýšit RAM a to proto, že nevi co tam provozujes a ladit to zabere čas.

Pokud máš root pristum sniz parametry MySQL a pak uvidis.... můžeš ladit i aplikaci ladit, ale paradoxně narazil opět na to, že levněji vyjde dokoupit hrubý výkon.
Root přístup mám. Můžeš mi nastínit které parametry by si snížil? Pomohl by výpis z my.conf? Aplikaci jsem dlouhodobě ladil ještě pod hostingem. Pak jsem si uvědomil, že víc už z ní nevytáhnu, že potřebuju větší výkon. Ten se s VPS dostavil, ale nastal problém kvůli kterému jsem založil toto vlákno.
26.10.2021 12:01
18
ukaž nastavení MySQL, vesměs 1GB je dostatek paměti i pro velké aplikace. Pád spíše signalizuje špatně nastavenou mysql, měla by totiž ideálně odmítnout nové spojení nebo ukončit dotaz předčasně, ne spadnout.

Mrkni na nastavení innodb_buffer_pool_size, innodb_buffer_pool_instances, thread_cache_size, max_connections, query_cache_*, table_*_cache. pokud je sem dáš, řeknu ti, jestli nejsou příliš ustřelené na 1 GB paměti.

Všichni navyšují, já rád optimalizuji.
26.10.2021 12:32
19
Původně odeslal TomášX
ukaž nastavení MySQL, vesměs 1GB je dostatek paměti i pro velké aplikace. Pád spíše signalizuje špatně nastavenou mysql, měla by totiž ideálně odmítnout nové spojení nebo ukončit dotaz předčasně, ne spadnout.

Mrkni na nastavení innodb_buffer_pool_size, innodb_buffer_pool_instances, ve, max_connections, query_cache_*, table_*_cache. pokud je sem dáš, řeknu ti, jestli nejsou příliš ustřelené na 1 GB paměti.

Všichni navyšují, já rád optimalizuji.
Děkuji Ti za konkrétní podnět. V administraci přímo výpis z my.conf nevidím (jen PHP a apache). Skrz SSH mi cat my.cnf vypíše tohle:
Kód:
# The MariaDB configuration file
#
# The MariaDB/MySQL tools read configuration files in the following order:
# 0. "/etc/mysql/my.cnf" symlinks to this file, reason why all the rest is read.
# 1. "/etc/mysql/mariadb.cnf" (this file) to set global defaults,
# 2. "/etc/mysql/conf.d/*.cnf" to set global options.
# 3. "/etc/mysql/mariadb.conf.d/*.cnf" to set MariaDB-only options.
# 4. "~/.my.cnf" to set user-specific options.
#
# If the same option is defined multiple times, the last one will apply.
#
# One can use all long options that the program supports.
# Run program with --help to get a list of available options and with
# --print-defaults to see which it would actually understand and use.
#
# If you are new to MariaDB, check out https://mariadb.com/kb/en/basic-mariadb-articles/

#
# This group is read both by the client and the server
# use it for options that affect everything
#
[client-server]
# Port or socket location where to connect
# port = 3306
socket = /run/mysqld/mysqld.sock

# Import all .cnf files from configuration directory
!includedir /etc/mysql/conf.d/
!includedir /etc/mysql/mariadb.conf.d/
V těch dalších douborech vidím jen:
Kód:
max_allowed_packet = 16M
Nic jiného tam není. Kde najdu ty proměnné, které si zmiňoval?
26.10.2021 12:43
20
mrkni ještě na soubory v adresářích /etc/mysql/conf.d/ a /etc/mysql/mariadb.conf.d/, podle konfigurace je tam odsud načítá
26.10.2021 13:04
21
Původně odeslal TomášX
mrkni ještě na soubory v adresářích /etc/mysql/conf.d/ a /etc/mysql/mariadb.conf.d/, podle konfigurace je tam odsud načítá
Kód:
/etc/mysql/conf.d # ls

mysql.cnf  mysqldump.cnf
Kód:
/etc/mysql/conf.d # cat mysql.cnf

[mysql]
Kód:
/etc/mysql/conf.d # cat mysqldump.cnf
[mysqldump]
quick
quote-names
max_allowed_packet = 16M
Kód:
/etc/mysql/mariadb.conf.d # ls
50-client.cnf        50-mysqld_safe.cnf  60-galera.cnf
50-mysql-clients.cnf  50-server.cnf      60-local.cnf
Kód:
/etc/mysql/mariadb.conf.d # cat 60-local.cnf

[mysqld]

# pokud lze postradat 1-2 sekundy zaznamu pri vypadku
innodb_flush_log_at_trx_commit = 2
# avoid double IO buffering
innodb_flush_method = O_DIRECT
# 256MB + 256 * log2(RAM size in GB) ### log2(8GB) = 3 nebo 2^x=yGB
# default 128M
innodb_buffer_pool_size = 1024M
# kazda tabulka v samostatnem souboru - zabrani rustu ib_data a ib_logfile do vysokych hodnot
innodb_file_per_table
innodb_log_file_size=1G

## Cache for disk based temporary files
#aria_pagecache_buffer_size=128M
## If you are not using MyISAM tables directly (most people are using InnoDB)
#key_buffer_size=64K
## If you have a lot (> 128) of simultaneous running fast queries, you should consider setting thread_handling to pool_of_threads.
#thread_handling = pool_of_threads
## After setting optimizer_search_depth = 0 (auto) the same query took 0.03 seconds.
#optimizer_search_depth = 0

query_cache_type = 1
query_cache_limit = 1M
query_cache_min_res_unit = 2k
query_cache_size = 80M

tmp_table_size= 64M
max_heap_table_size= 64M

#wait_timeout=60 

# Enable the slow query log to see queries with especially long duration 
#slow_query_log 
#slow_query_log_file = /var/log/mysql/mariadb-slow.log 
#long_query_time = 1 
#log_slow_rate_limit = 1000 
#log_slow_verbosity  = query_plan 
#log-queries-not-using-indexes
Nevím, který ten soubor je správný. Tohle už ale vypadá jako nastavení mysql. Je to v pořádku?
26.10.2021 13:18
22
ano, správné voloviny jsou v tom 60-local.cnf. Je to dost nesouměrné, ten kdo to nastavoval nejspíš šel POG (pokus, omyl, google).

U innodb_buffer_pool_size je komentář jak došel k výsledku, sám v tom komentáři píše, že to je varianta spíše pro 8 GB paměti, teď je tam nastaveno 1024M, což je strašně moc. Tady bych nastavil 512M a explicitně přidal innodb_buffer_pool_instances=1. Nastavení innodb_flush_method= O_DIRECT je nebezpečné pokud nepoužíváš diskový řadič s baterii, pokud máš obyčejné vps, raději bych tam tuhle hodnotu nedával, sice dojde k lehkému zpomalení, ale ztráta dat při výpadku je větší ztráta.

U innodb_file_per_table chybí hodnota, je to tedy syntax error, podle komentáře by tam mělo být innodb_file_per_table=1.

query_cache_size=80M je příliš vysoká na tvoji kapacitu, snížil bych to na max. 10M.

Tj. v první řadě bych doporučil udělat tyhle změny:

Kód:
innodb_buffer_pool_instances=1
innodb_buffer_pool_size=512
query_cache_size=10M
To by ti mělo minimalizovat pády mysql/mariadb na serveru s 1GB paměti. Zároveň bys měl sledovat jaký to bude mít vliv na aplikaci, nemělo by se snížit výkonnost databáze. Další ladění je možné, ale tam je potřeba již znát způsob používání databáze, velikosti dat a dotazů. Teď jsem řešil pouze, aby se databáze paměťově vešla na server.
26.10.2021 13:50
23
Původně odeslal TomášX
ano, správné voloviny jsou v tom 60-local.cnf. Je to dost nesouměrné, ten kdo to nastavoval nejspíš šel POG (pokus, omyl, google).

U innodb_buffer_pool_size je komentář jak došel k výsledku, sám v tom komentáři píše, že to je varianta spíše pro 8 GB paměti, teď je tam nastaveno 1024M, což je strašně moc. Tady bych nastavil 512M a explicitně přidal innodb_buffer_pool_instances=1. Nastavení innodb_flush_method= O_DIRECT je nebezpečné pokud nepoužíváš diskový řadič s baterii, pokud máš obyčejné vps, raději bych tam tuhle hodnotu nedával, sice dojde k lehkému zpomalení, ale ztráta dat při výpadku je větší ztráta.

U innodb_file_per_table chybí hodnota, je to tedy syntax error, podle komentáře by tam mělo být innodb_file_per_table=1.

query_cache_size=80M je příliš vysoká na tvoji kapacitu, snížil bych to na max. 10M.

Tj. v první řadě bych doporučil udělat tyhle změny:

Kód:
innodb_buffer_pool_instances=1
innodb_buffer_pool_size=512
query_cache_size=10M
To by ti mělo minimalizovat pády mysql/mariadb na serveru s 1GB paměti. Zároveň bys měl sledovat jaký to bude mít vliv na aplikaci, nemělo by se snížit výkonnost databáze. Další ladění je možné, ale tam je potřeba již znát způsob používání databáze, velikosti dat a dotazů. Teď jsem řešil pouze, aby se databáze paměťově vešla na server.
Zajímavé, čekal bych že to poměrně drahý VPS bude mít vyřešené líp (je to defaultní nastavení). Zřejmě chtějí, aby si člověk automaticky přikoupil RAM, pokud tomu nerozumí. Koupil jsem si VPS se 2GB a nastavené to je pro stroj s 8GB.

Nastavil jsem to jak si psal a po restartu to vypadá jako na screenshotu. Do 1GB by se to stejně nevešlo. Uvidíme, co to bude dělat dál. Dám vědět jak to dopadlo. Zatím Ti děkuji a ostatním co se snažili poradit taky.

Přiložené miniatury
26.10.2021 13:57
24
V prípade že to je predavané ako Root VPS a je tam maximálne predinštalovaný software tak všetko v poriadku a cena nemá absolútne čo robiť s nastavením serveru.
26.10.2021 14:08
25
Původně odeslal Jamira40
V prípade že to je predavané ako Root VPS a je tam maximálne predinštalovaný software tak všetko v poriadku a cena nemá absolútne čo robiť s nastavením serveru.
Ok, mozna je to bezna praxe, ale urcite by bylo fajn mit konfiguraci dle zakoupeneho vykonu. V cene je support, ktery mi pri dotazu "proč restartuje mysql" napsal "je potřeba dokoupit RAM". Kdyby mi napsal, musíte si server překonfigurovat na 2GB, defaultně je nakonfigurován na 8GB, tak neřeknu ani popel.

Takto mi to za službu s tímto výkonem za cenu necelých 4000 v pořádku nepřijde. Nebo v čem je podle Vás výhoda si platit za 1CPU 2GB RAM 40GB disk 4000, když Vám nikdo neporadí jako u root serveru za poloviční cenu?
26.10.2021 14:10
26
Ještě posílám výpis z htop.

Přiložené miniatury
26.10.2021 14:43
27
podle screenu ale vidím, že mariadb bere kolem 700 - 800 MB, což by mělo být v pořádku, co mi nedochází?
26.10.2021 14:58
28
To jsem jen dodal výpis, protože ho po mě někdo chtěl. Jestli je v souladu s tím co si psal, tak to je v pořádku:).
26.10.2021 15:26
29
podle mě to je v souladu, pokud jsi změnil nastavení a takhle to vypadá s pamětí, je to očekávané. Mělo by to přestat padat, je to sice taková střelba na slepo, ale mohlo by to stačit. Původní nastavení nebylo zrovna nejlepší, nemluvě o té řadě dalších chyb, které sice nemají takový přímý vliv na celkovou spotřebu paměti, ale spíše ukazují, že konfigurace není optimální.
26.10.2021 15:36
30
Původně odeslal tomasr
Ok, mozna je to bezna praxe, ale urcite by bylo fajn mit konfiguraci dle zakoupeneho vykonu. V cene je support, ktery mi pri dotazu "proč restartuje mysql" napsal "je potřeba dokoupit RAM". Kdyby mi napsal, musíte si server překonfigurovat na 2GB, defaultně je nakonfigurován na 8GB, tak neřeknu ani popel.

Takto mi to za službu s tímto výkonem za cenu necelých 4000 v pořádku nepřijde. Nebo v čem je podle Vás výhoda si platit za 1CPU 2GB RAM 40GB disk 4000, když Vám nikdo neporadí jako u root serveru za poloviční cenu?
Hukot nebo Contabo :) za 4K je tato konfigurace fakt úlet :) 

Virtual Private Servers | Quality VPS at Incredible Price | Contabo