duncanf293 Posted July 22, 2020 Report Share Posted July 22, 2020 Sveiki, esmu sācis lietot Docker un nevaru nepamanīt, ka uz MacOS tas darbojas diezgan lēni. Vispārīgi saprotu tam iemeslus - MacOS un Windows vide nav linux - tur ir vajadzīga vēl viena smaga/lēna abstrakcija. Izskatās bēdīgi, jo jaunam Macbook Pro ar i9 procesoru vajag kādas 2 sekundes, lai apstrādātu vienu web requestu. Tur pat nenotiek nekas resursu intensīvs, nav pat savienošanās ar datubāzi. Tikai parasta skata renderēšana. Salīdzinājumam švakāks DELL laptops ar linux burtiski lido. Vai tam ir kāds reāls risinājums? Bieži dzirdu par to cik Docker ir labs, cik plaši to izmanto utt, bet nu kā tad to sūdu reāli izmantot ja sakarīgs ātrums ir tikai Linux vidē? Paldies! Quote Link to comment Share on other sites More sharing options...
Kasspars Posted July 22, 2020 Report Share Posted July 22, 2020 Lēna ir failu lasīšana no host mašīnas. Ja visi faili būs pa tiešo uz docker image, tad ātrdarbībai problēmu nebūs Quote Link to comment Share on other sites More sharing options...
duncanf293 Posted July 22, 2020 Author Report Share Posted July 22, 2020 (edited) 18 minutes ago, Kasspars said: Lēna ir failu lasīšana no host mašīnas. Ja visi faili būs pa tiešo uz docker image, tad ātrdarbībai problēmu nebūs Hmm, lokālajā dev vidē faili nekad nebūs pa tiešo uz docker image... Tā kā faili tiek visu laiku laboti, rakstīti klāt jauni, dzēsti utt. Tad projekta mape vienmēr ir pieslēgta caur mounted volume. Tas variants ko Tu aprakstīji ir produkcijā, bet tur jau arī MacOS nekad nebūs. Edited July 22, 2020 by duncanf293 Quote Link to comment Share on other sites More sharing options...
briedis Posted July 22, 2020 Report Share Posted July 22, 2020 Tu vispār mēģināji mainīt tos volume tipus pie mountošanas? consistent, cached, delegated utt. Quote Link to comment Share on other sites More sharing options...
werd Posted July 22, 2020 Report Share Posted July 22, 2020 http://docker-sync.io - pieredze gan rāda, ka vienā brīdī nosprūst - sīkāk te. Diemžēl sakarīga risinājuma priekš MacOS pagaidām nav. Quote Link to comment Share on other sites More sharing options...
duncanf293 Posted July 22, 2020 Author Report Share Posted July 22, 2020 48 minutes ago, briedis said: Tu vispār mēģināji mainīt tos volume tipus pie mountošanas? consistent, cached, delegated utt. Nē, nav mēģināts. Strādā? Tā nav īsti tāda informācija pie kuras tu nonāc tajā posmā, kad vēl tikai mācies pirmos soļus ar Docker. Pamēģināšu palietot "delegated" kādu brīdi. 8 minutes ago, werd said: http://docker-sync.io - pieredze gan rāda, ka lielākiem projektiem tas vienā brīdī nosprūst (git checkout $FB etc.). Diemžēl sakarīga risinājuma priekš MacOS pagaidām nav. Third-party risinājumus 0.x versijas stadijā gan ne pārāk gribas lietot, bet paldies par ieteikumu. Quote Link to comment Share on other sites More sharing options...
duncanf293 Posted July 28, 2020 Author Report Share Posted July 28, 2020 Diemžēl nekādu īpašu efektu no "delegated" mount tipa nejūtu Quote Link to comment Share on other sites More sharing options...
pcsssss Posted July 28, 2020 Report Share Posted July 28, 2020 Vai esi drošs, ka vaina Dockerī? Man uz MacOS python django aplikācija ar ieslēgtām visām dev fīčām, datubāzes pieprasījumiem utt. vidēji 300ms izpildās. Quote Link to comment Share on other sites More sharing options...
duncanf293 Posted July 28, 2020 Author Report Share Posted July 28, 2020 2 hours ago, pcsssss said: Vai esi drošs, ka vaina Dockerī? Man uz MacOS python django aplikācija ar ieslēgtām visām dev fīčām, datubāzes pieprasījumiem utt. vidēji 300ms izpildās. Novēroju apmēram šādu uzvedību - ja neesmu kādas 5min refrešojis lapu, tad pēc pirmā refreša load time būs lēns, kādas 3-5 sekundes. Uzreiz pēc tam atkārtoti spiežot refresh, ir labāks load time, varbūt 1-2 sekundes. Ja atstāju mierā uz 5min vai ilgāk, tad pirmais refresh atkal aizņem 3-5 sekundes un atkārtoti refreši biški mazāk, bet tāpat ilgi. Ok, šī varbūt nav lielākā problēma pasaulē, bet tomēr diezgan kaitinoši. Šķiet specifiski MacOS, jo uzliekot uz produkcijas linux servera, ātrdarbības problēmas vairs nav. Quote Link to comment Share on other sites More sharing options...
briedis Posted July 28, 2020 Report Share Posted July 28, 2020 Izklausās pēc koda/nginx/fpm problēmas. Kas notiek, ja ver vaļā vienkārši tukšu php failu - tas pats, ir delays? Quote Link to comment Share on other sites More sharing options...
Average Joe Posted July 28, 2020 Report Share Posted July 28, 2020 1 hour ago, duncanf293 said: Novēroju apmēram šādu uzvedību - ja neesmu kādas 5min refrešojis lapu, tad pēc pirmā refreša load time būs lēns, kādas 3-5 sekundes. Uzreiz pēc tam atkārtoti spiežot refresh, ir labāks load time, varbūt 1-2 sekundes. Ja atstāju mierā uz 5min vai ilgāk, tad pirmais refresh atkal aizņem 3-5 sekundes un atkārtoti refreši biški mazāk, bet tāpat ilgi. Ok, šī varbūt nav lielākā problēma pasaulē, bet tomēr diezgan kaitinoši. Šķiet specifiski MacOS, jo uzliekot uz produkcijas linux servera, ātrdarbības problēmas vairs nav. Lēns "initial load" varētu būt saistīts ar DNS problēmām. Pamēģini Domain Name (ja kaut kur izmantojas, piemēram, konekcijai ar DB) vietā ierakstīt IP adresi. Quote Link to comment Share on other sites More sharing options...
ViktorsN Posted July 29, 2020 Report Share Posted July 29, 2020 Arī kādu laiku atpakaļ cīnījos, lai paātrinātu ielādi development laikā uz MacOS. Tik tālu esmu nonācis pie tā, ka web-app'am (uz Laravel) vendorus (t.i. composer dependencies) instalēju ārpus source foldera. Respektīvi - šie vendori netiek sync'oti starp hostu un konteineri. (kontainerī tas izskatās šādi: app source man sēž iekš /app direktorijas, bet vendori iekš /app-vendors direktorijas). Īsāk sakot - jādara tā, lai tiek syncoti tikai vajadzīgie faili, nevis vēl visādi 3rd party faili, kurus development laikā neaiztiec, un būs laime. Quote Link to comment Share on other sites More sharing options...
duncanf293 Posted July 30, 2020 Author Report Share Posted July 30, 2020 18 hours ago, ViktorsN said: Arī kādu laiku atpakaļ cīnījos, lai paātrinātu ielādi development laikā uz MacOS. Tik tālu esmu nonācis pie tā, ka web-app'am (uz Laravel) vendorus (t.i. composer dependencies) instalēju ārpus source foldera. Respektīvi - šie vendori netiek sync'oti starp hostu un konteineri. (kontainerī tas izskatās šādi: app source man sēž iekš /app direktorijas, bet vendori iekš /app-vendors direktorijas). Īsāk sakot - jādara tā, lai tiek syncoti tikai vajadzīgie faili, nevis vēl visādi 3rd party faili, kurus development laikā neaiztiec, un būs laime. Domu laikam sapratu, bet dažas lietas jāprecizē. Vendor ielikšana atsevišķā mapē pati par sevi diez vai kaut ko dod. Tas ko tu laikam gribēji pateikt ir, ka "app-vendors" ir iekopēts konteinerā ar COPY iekš Dockerfile, nevis pieslēgts caur volume? Caur volume pieslēgts tikai "app", jeb development laikā maināmais source kods? Tas varētu tiešām būt efektīvi. Quote Link to comment Share on other sites More sharing options...
zrks11 Posted July 30, 2020 Report Share Posted July 30, 2020 te bišku pa tēmu - https://www.freecodecamp.org/news/how-to-enable-live-reload-on-docker-based-applications/ Quote Link to comment Share on other sites More sharing options...
ViktorsN Posted July 30, 2020 Report Share Posted July 30, 2020 (edited) 10 hours ago, duncanf293 said: Domu laikam sapratu, bet dažas lietas jāprecizē. Vendor ielikšana atsevišķā mapē pati par sevi diez vai kaut ko dod. Tas ko tu laikam gribēji pateikt ir, ka "app-vendors" ir iekopēts konteinerā ar COPY iekš Dockerfile, nevis pieslēgts caur volume? Caur volume pieslēgts tikai "app", jeb development laikā maināmais source kods? Tas varētu tiešām būt efektīvi. Yep, domu saprati. Vienīgi nevis iekopēts, bet gan build laikā tiek uzreiz sainstalēts viss iekš tā /app-vendors, jo composer.json configā norādīts path. Tas arī pie reizes atvieglo build cache saistītās lietas. Tiesa gan bez dažiem workaroundiem neiztiku (lai pareizi darbotos package:discover komanda), konkrēti Laravelim, bet nu tas jau cits stāsts.. P.S - Priekš Composer'a iesaku vēl šādu brīnu - https://github.com/hirak/prestissimo Edited July 30, 2020 by ViktorsN Quote Link to comment Share on other sites More sharing options...
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.