Sziasztok!
Van egy 1,6 GB-os mysqldump állomány ami az egyik "fejlesztői" gépen iszonyú lassan töltődik vissza.
Ha egy time parancsot elé teszek a következő kimenetet kapom:
real 27m45,435s user 0m25,539s sys 0m0,912s
Viszonyításkép az egyik VPS-en 27 perc helyett 4 perc ugyan ez. Igaz ebben a "fejlesztői" gépben SATA SSD van, a VPS-ben meg valószínűleg sokkal gyorsabb MVMe SSD, de ekkora eltérésnek azért gondolom nem kellene lenni.
SMART információkból nekem úgy tűnik nincs baja az SSD-nek, ennek ellenére én azt sejtem a szűk keretmetszetnek. De ötletem sincs hol kezdjem a hibakeresést, mit nézzek és mivel. Tudnátok valamit tanácsolni? Én fejlesztő vagyok, ezekhez a dolgokhoz annyira nem értek.
- 526 megtekintés
Hozzászólások
Van-e a mysql szerver konfigokban eltérés? Illetve oprendszer/MySQL verzió eltérés van-e?
- A hozzászóláshoz be kell jelentkezni
Több fajta sqldump létezhet, az egyiknél minden egyes sor külön insert-et kap, van ahol sok-sok sor van egy insert-ben. Ha külön insert-ek vannak, akkor jelentős különbség adódhat betöltéseknél. Az ilyen eseteknél a CPU és IO kapacitás ami még más lehet a két gépnél.
- A hozzászóláshoz be kell jelentkezni
én feltételezem, hogy a kérdező uazt a dump-t próbálja meg betölteni mindkét helyen...
(de persze lehet, hogy hibásan teszem)
- A hozzászóláshoz be kell jelentkezni
Elsődlegesen szerintem az innodb paramétereit nézném meg. Ha tudod, dobd be a my.cnf-et.
- A hozzászóláshoz be kell jelentkezni
A fejlesztőin.
!includedir /etc/mysql/conf.d/
!includedir /etc/mysql/mysql.conf.d/
[mysqld]
skip-grant-tables
#innodb_force_recovery = 4
default-time-zone='+00:00'
A VPS-en:
!includedir /etc/mysql/conf.d/
!includedir /etc/mysql/mysql.conf.d/
[mysqld]
skip-grant-tables
Itt van egy mysqldump.cnf állomány is:
[mysqldump]
quick
quote-names
max_allowed_packet = 16M
+ egy mysqld.conf is ami nincs a fejlesztőin (vagy csak én nem találom)
[mysqld_safe]
socket = /var/run/mysqld/mysqld.sock
nice = 0
[mysqld]
user = mysql
pid-file = /var/run/mysqld/mysqld.pid
socket = /var/run/mysqld/mysqld.sock
port = 3306
basedir = /usr
datadir = /var/lib/mysql
tmpdir = /tmp
lc-messages-dir = /usr/share/mysql
skip-external-locking
key_buffer_size = 16M
max_allowed_packet = 16M
thread_stack = 192K
thread_cache_size = 8
myisam-recover-options = BACKUP
query_cache_limit = 1M
query_cache_size = 16M
log_error = /var/log/mysql/error.log
expire_logs_days = 10
max_binlog_size = 100M
5.7.38-as verzió a fejlesztőin 5.7.26 a VPS-en.
- A hozzászóláshoz be kell jelentkezni
!includedir
:)
- A hozzászóláshoz be kell jelentkezni
Ott a pont. :)
Viszont a fejlesztőin üresek a könyvtárak.
- A hozzászóláshoz be kell jelentkezni
find / -name mysqld.conf
- A hozzászóláshoz be kell jelentkezni
Az szándékos a VPS-en?
[mysqld]
skip-grant-tables
Remelem a 3306 port nem elerhető bárhonnan. :)
A memoria a VPS-en mekkora és mekkora a fejlesztői gépen? (buffer sokat segít, aszinkron io-ban, a VPS-en szerintem alapbol az van)
Bonusz: Ha windows az OS és van viruskergető (alapbol is van win defender), az nagyon szereti az on fly megfogni a servicek i/o-it hiszen minden rányulásnál scannel.
Add hozzá a mysql könyvtárat exception-nak, hogy arra ne akarjon scannelni minden műveletnél.
Szijártó Zoltán
Aki tud az alkot, aki nem tud az csak szövegel.
- A hozzászóláshoz be kell jelentkezni
a visszatöltés idejére: innodb_flush_log_at_trx_commit = 0, sync_binlog = 0
- A hozzászóláshoz be kell jelentkezni
de ekkora eltérésnek azért gondolom nem kellene lenni.
De nincs kizárva sem. Elsőnek mérd meg a lemez io.t , mondjuk fio-val mindkét gépen, szinkron irást , aszinkron irást.
- A hozzászóláshoz be kell jelentkezni