Salam. WordPress üzərində olan bir sayt var. xəbər saytıdı. əvvəl köhnə sayt laravel də yaziımışdı. onu parser yazıb yeni wordpress sisteme keçirmək lazım idi. yazdım parseri keçirdim ilk əvvəllər çox sürətlə insert olundu hardasa 1 dəqiqədə 100 post insert eləyirdi rahat. ümumi olaraq 400 min xəbər var. hardasa 200 min parse olunub . 150. minden sonra başladı çox yavaş getməyə. indi 200 min post var wp də. ve 1 postu insert etmək üçün 1 dəqiqəyə yaxın vaxt çəkir. parseri saxlayıram wordpress in özünün dashboard u ilə new post əlavə edəndə belə 1 dəqiqəyə yaxın çəkir insert etməyi. server də deyim ki zəif server deyil. 32 ram 8 core olan serverdi. və insert vaxtı baxıram sadecə cpu 99 faizə qalxır. server kilidlənir. xeyli araşdırdım ama bir yol tapa bilmədim. səbəb nə ola biler sizcə? teşekkür edirəm.
Verilmiş cavablar və yazılan şərhlər (7 cavab var)
1
normal deyil əlbəttə.
ən azından ilk olaraq query monitor pluginini aktiv saxlayaraq wp-adminde post yaradın və canlı reporta baxın görün neçə saniyə nəyə gedib, hansı resurs ən çox memory və resurs yeyib.
Demək olardı ki – ola bilər ki, parser scriptdə bug var, eksponensial qaydada resurs yeməyi artırır deyə bəlli saydan sonra ağırlaşır. Amma xalis wp-admində də belə olursa demək ki insert hook-lardan birində problem var – ya remote mənbəyə bağlanır hər dəfə – ya da hər dəfə bütün DB rowlarını oxuyan yersiz bir script var – baza ölçüsü artdıqca o script də ağırlaşır.
0
Təşəkkür edirəm cavabınız üçün. Əlavə hər hansı qeyri adi plugin yoxdur. 2 3 plugin var hamısı da normal tanınan güvənli pluginlərdi. Yoast seo, acf premium. Əvvəl onnan şübhələndim məndə ki yəqin yazdığım parse scriptdə nəsə problem var. Ona görə dashboard ilə yoxladım add post elədim yenə gecikmə oldu. Query monitor u yükləyib baxaram ətraflı.
0
qeyd etdiyiniz plugini yukledim. ve butun diger pluginleri deaktiv edib yeniden yoxladim demek olar ki suretde deyisiklik olmadi. yene de eyni gecikme oldu. query monitor da baxanda da en uzun ceken query bu oldu. 24 saniye cekir hardasa. posts liste daxil olanda
SELECT COUNT( 1 )
FROM wp_posts
WHERE post_type = ‘post’
AND post_status NOT IN ( ‘trash’,’auto-draft’,’inherit’,’request-pending’,’request-confirmed’,’request-failed’,’request-completed’ )
AND post_author = 1
bu mene ele gelir wordpress in ozunun default query si di. ama niye bele gecikir maraqlidi
0
Bəli, default query-dir və 0.001 saniyəyə run olan bir şeydir.
Parseriniz davam edir işləməyə hazırda? Ordan da şübhələnməyə dəyər. Bəlkə də cron-da gecikmələr olub və biri o birinin növbəsinə girməklə zəncirvarı böyük bir tıxac yaradıb. Onu mütləq SSH ilə girib baxmaq lazımdır. Lazım olsa veb server və mysql restartlar da vermək ki, tıxac təmizlənsin. Amma bu zaman da gərək son dəfə harda qalmışdı onu adjust edəsiniz manual qaydada. Çünki qarışacaq bir az – əgər parseriniz belə qırılmalara qarşı dayanlıqlı deyilsə.
0
xeyr parseri sondurmusem. sondurennen sonra duzdu queue yaranmisdi ve hardasa 4-5 saat getdi insertler tam temizlenene qeder tixac. ama indi tam olaraq dayanib. wp_posts dan da baxiram hec bir insert getmir row sayi deyisilmez qalib. hemde serverin yukune baxib bilmirem ki 0 % di yuk. butun sistemi yoran demek olar ki bu query di tekce.
0
bele bir shey eledim. deqiq o demekdir ki bu wordpresslik bir problem yoxdur. birbasa command line ile qosuluram mysql e ve hemen gec geden querylerden birini run edirem, netice eyni olur. wp query monitorda da 8 saniyeye run oldu bu query mysql command line ile de. bele cixir ki problem mysql dedi?
mysql> SELECT COUNT( 1 )
-> FROM wp_posts
-> WHERE post_type = ‘post’
-> AND post_status NOT IN ( ‘trash’,’auto-draft’,’inherit’,’request-pending’,’request-confirmed’,’request-failed’,’request-completed’ )
-> AND post_author = 1;
+————+
| COUNT( 1 ) |
+————+
| 240151 |
+————+
1 row in set (8.21 sec)
1
Bəli. Table-ları recreate edə bilərsiniz optimize düyməsi ilə (phpmyadmin or command-line). Böyük ehtimal həll edə bilər bu problemi.
Və ya duplicate DB yaradıb orda run edə bilərsiz ki bəlkə elə yaxşı olar ki duplicate db-yə keçirəsiz saytı.
Sual verin
Cavab verin