Closed albbas closed 13 years ago
Date: 2011-10-07 17:36:21 +0200
From: Trond Trosterud <
Etter at vi fekk nye språkpar denne veka (utan _FIN og _SWE, men med reelle ord) har tida det tar å få nytt 5-sett i leksa gått opp til ca 6-8 sekund (det varierer litt).
For å repetere:
Dette er for lang tid.
For andre sett enn "Sørsamisk til norsk" blir "Nytt sett"-knappen grå mens brukaren ventar. Det er for så vidt positiv (hindrar henne i å trykke fleire gonger, og dermed forlenge dei 8 sekunda).
Vi håpar dette er ein bug, og at det er mogleg å få ned reaksjonstida.
Alternativt kanskje skifte datamaskin, eller programvareversjon.
Date: 2011-10-08 00:55:01 +0200
From: Ryan Johnson <
Hei,
Eg sjekka og såg at database engin var MyISAM og ikkje InnoDB. InnoDB er mykje raskare. Då eg bytta eit par tables til InnoDB var det plutseleg raskare. Cip hev forandra default-storage-engine setting i /etc/my.cnf til InnoDB, og no eg lader databasen att.
Det er noko som kan forandrast på ein eller to eller kor mange som helst tabler (utan å forstyrra programmer som nyttar deim), men trudde at det skulle vera betre om det gjerast automatisk, elles må eg forandra database engine kvar gong me fornyer databasen. Kan bety også at smeoahpa er raskare når nokon fornyer den.
Om det er ikkje raskt nok då, skal eg sjå på queryene og andre mysql settings. Kan vera at eg kan optimisera databasen og smaoahpa litt meir. :)
Date: 2011-10-08 06:51:57 +0200
From: Ryan Johnson <
Okei, prøv den no. Eg testa og det ser litt raskare ut, og mens eg såg på top
, nytta MYSQL mindre minne for å finna ord... Men, nettet er litt tregt heime, og eg er ikkje i Noreg, då kan eg ikkje segja om det er tregt fordi systemet lager ei lista av spørsmål, eller om det er tregt fordi det sender eit ferdig HTTP-request. :)
Date: 2011-10-08 08:17:51 +0200
From: Trond Trosterud <
Nede i 3 sekund no.
Date: 2011-10-08 08:34:34 +0200
From: Ciprian Gerstenberger <
Det stemmer, jeg har sjekket selv. Men 3 sek er også litt for mye for slik operasjon.
(In reply to comment #3)
Nede i 3 sekund no.
Date: 2011-10-08 23:11:49 +0200
From: Ryan Johnson <
Okei, eg gjorde litt meir optimisering (eller det ser ut som det hev funka på maccen min og dvelopment maskina mi):
Når eg starta, viewen til leksa var slik:
$ 32 queries in 0.616 seconds 32 queries in 0.206 seconds 32 queries in 0.216 seconds 32 queries in 0.206 seconds 32 queries in 0.22 seconds 38 queries in 0.223 seconds 37 queries in 0.211 seconds 37 queries in 0.212 seconds 37 queries in 0.202 seconds 39 queries in 0.32 seconds 37 queries in 0.296 seconds 37 queries in 0.238 seconds
... osv.
Men nå ser det ut sånn:
$ 33 queries in 0.028 seconds 32 queries in 0.02 seconds 33 queries in 0.018 seconds 32 queries in 0.023 seconds 44 queries in 0.016 seconds 38 queries in 0.014 seconds
Det var ikkje mogleg å minka antal queryer enno, men eg minka arbeid dei gjer. Kan sjå på det litt meir om det trengst. Skal installera på victorio snart og testa.
Eit anna spørsmål å løysa kan vera: kvifor køyrer det raskare på ei virtuel maskin, enn på victorio (som hev mykje meir memory og disk space...) :)
Date: 2011-10-10 18:09:57 +0200
From: Ryan Johnson <
Sida victorio vart restarta det ser ut til meg som det køyrer raskare om man vel smanob, smaswe, smafin, men motsatt er det litt meir tregt. Eg er litt lengre bort, og... Korleis ser det ut på dykkar sida?
Date: 2011-10-15 03:13:24 +0200
From: Ryan Johnson <
Den ser ut til å ikkje vera noko problem no. Eg lukker buggen, men om det dukker opp andre problem med hastigheit, kan nokon opna den att, eller lag ein ny bugg. Eg trur at Morfa-B og Morfa-R er so raskt som dei kan vera no utan fleire timar arbeid og testing for å sjå at morfa lager spørsmål på samme vis. Morfa-B og -R er raske no, men om nokon vil at dei går raskare kan me tala om det etter lansering.
Hastigheit kan vera løyst på andre visor og, f. eks., om me får mod_wsgi på plass før lanseringa. Andre løysningar kan vera: bruk av postgresql til staden av mysql (eg hev litt meir kunnskap i postgres, men kan segja at den er raskare med django, og litt meir flink med index-tabler), bruk av nginx til staden av apache (nginx er fantastisk og rask).
Eg synest elles at systemet køyrer fint som det er no, men me får sjå når det er 10-15 studentar som nyttar oahpa samtidig under eit kurs.
Problemet med Leksa er no fiksa, då lukker eg buggen. Om samtale om hastigheit må halda fram, kan me ta det ved epost utafår bugzilla. :)
R
Date: 2011-10-15 08:25:35 +0200
From: Trond Trosterud <
Eg ser noko merkeleg når eg testar for kor lang tid ting tar i Leksa:
sma>nob 2 sma>swe 2 sma2fin 2 nob>sma 6 swe2sma 6 fin2sma 6
Med andre ord: Nytt sett frå sma til eit anna språk tar under 2 sekund (og er akseptabelt), mens nytt sett når språkparet er frå eit anna språk og til sma, tar det 6 sekund, som før.
Så det ser ut som om fiksen din berre gjeld ei retning.
Date: 2011-10-15 18:17:26 +0200
From: Ryan Johnson <
Hmm, interessant! Eg skal kikke på den att. Det ser ut som hastigheit til sql-queryane kan vera berre ein del av problemet.
Det kan også vera at det er framleis noko me kan gjera med MySQL konfigurasjon. På maskina mi går det slik med sqlite på mac:
35 queries in 2.18 seconds <--- smaswe 32 queries in 0.041 seconds 32 queries in 0.04 seconds 32 queries in 0.04 seconds 32 queries in 0.106 seconds <--- no byrjar med swesma 32 queries in 0.049 seconds 32 queries in 0.046 seconds 32 queries in 0.051 seconds
Og no med mysql på ein linux vm:
32 queries in 0.247 seconds <--- smaswe 32 queries in 0.028 seconds 32 queries in 0.025 seconds 32 queries in 0.021 seconds 32 queries in 0.302 seconds <--- swesma 32 queries in 0.024 seconds 32 queries in 0.023 seconds 32 queries in 0.02 seconds
Poenget er ikkje å visa at ein eller annan databaseprogram er raskare en ein annan, men at det kan gå litt tregt når ein flytter til eit nytt språkpar. Fordi det skjer på to ulike databaseprogrammer, kan det vera at problemet er i python/django i nokon stad. Eg skal sjå på den, og då prøve å finne på
Eg skal iall fall finne ei løysing i python-koden først, og då finne ut kva eg kan gjera med mysql konfigurasjon om det er noko som kan optimiserast.
Date: 2011-10-15 20:46:30 +0200
From: Ryan Johnson <
Eg hev no arbeidd med visa django nyttar informasjon det får frå databasen etter queryane og fått ein auking i hastigheit, som eg fekk på virtuelmaskina mi med MySQL. Det ser ut no som det går nesten so fort i sma-X som i X-sma. Om det er ikkje slik, det er framleis nokre ting eg kan gjera.
Det er no berre å sjekke på victorio, men nokon må omstarta apache først. Eg skal venta å gjera ein svn up på victorio før eg veit at nokon kan omstarta den straks etterpå.
Date: 2011-10-17 09:41:07 +0200
From: Ryan Johnson <
HA HA, eg fann problemet!
Her er ein query frå swesma:
SELECT smadrill_word
.id
, smadrill_word
.lemma
FROM smadrill_word
INNER JOIN smadrill_word_semtype
T4 ON (smadrill_word
.id
= T4.word_id
) INNER JOIN smadrill_semtype
T5 ON (T4.semtype_id
= T5.id
) INNER JOIN smadrill_wordtranslation
ON (smadrill_word
.id
= smadrill_wordtranslation
.word_id
) WHERE (NOT ((smadrill_word
.id
IN (SELECT U1.word_id
FROM smadrill_word_semtype
U1 INNER JOIN smadrill_semtype
U2 ON (U1.semtype_id
= U2.id
) WHERE U2.semtype
IN ('exclude_smanob', 'mPERSNAME', 'PLACES')) AND smadrill_word
.id
IS NOT NULL)) AND T5.semtype
IN ('HUMAN') AND smadrill_wordtranslation
.language
= 'sma' AND smadrill_word
.language
= 'swe' ) ORDER BY RAND() LIMIT 10 ;
På VM:n min køyrer den i 0.15 sec, men på vic var det framleis 3.86 sec. Då kan det ikkje vera eit problem med mange JOINs, osv.
Eg såg på indexes til dei ulike tablene som er med i queryen:
vic:
mysql> SHOW INDEXES FROM smadrill_word
;
+---------------+------------+------------------------+-------------+
| Table | Non_unique | Key_name | Cardinality |
+---------------+------------+------------------------+-------------+
| smadrill_word | 0 | PRIMARY | 13283 |
| smadrill_word | 1 | smadrill_word_6c63d3c2 | NULL |
| smadrill_word | 1 | smadrill_word_75853655 | NULL |
| smadrill_word | 1 | smadrill_word_58909fea | NULL |
| smadrill_word | 1 | smadrill_word_feffdf0 | NULL |
+---------------+------------+------------------------+-------------+
5 rows in set (0.00 sec)
VM:
mysql> SHOW INDEXES FROM smadrill_word
;
+---------------+------------+------------------------+-------------+
| Table | Non_unique | Key_name | Cardinality |
+---------------+------------+------------------------+-------------+
| smadrill_word | 0 | PRIMARY | 13283 |
| smadrill_word | 1 | smadrill_word_6c63d3c2 | 13283 |
| smadrill_word | 1 | smadrill_word_75853655 | 3 |
| smadrill_word | 1 | smadrill_word_58909fea | 13283 |
| smadrill_word | 1 | smadrill_word_feffdf0 | 6641 |
+---------------+------------+------------------------+-------------+
5 rows in set (0.00 sec)
Og so var det ein 'AHA' moment.
Cardinality til smadrill_word
, smadrill_wordtranslation
, smadrill_word_semtype
(og truleg andre tabler og) er NULL på vic, men ikkje på VM:n min. Ei midlertideg løysing for å fiksa denne er å køyra fylgjande kommento:
analyze table TABLENAME
;
Etter å ha gjort dette med tablene køyrer samme queryen på victorio i ~.48 sec.
No er det berre å finne ut kvifor Cardinality har vorte til NULL, og då får me løysing. Om ein prøver no å trykkja på 'nytt sett' i grensesnittet køyrer Leksa veldig raskt.
Skal sjå på den litt meir seinare, men ville berre segja kva er statusen. :>
Date: 2011-10-18 10:04:09 +0200
From: Trond Trosterud <
Vi er nede i under to på begge.
This issue was created automatically with bugzilla2github
Bugzilla Bug 1173
Date: 2011-10-07T17:36:21+02:00 From: Trond Trosterud <>
To: Ryan Johnson <>
CC: berit.a.baal, ciprian.gerstenberger, heli1401, lene.antonsen, trond.trosterud
Last updated: 2011-10-18T10:04:09+02:00