Avatar billede airforce1 Nybegynder
25. marts 2002 - 21:52 Der er 6 kommentarer

Løsning til hurtigere afvikling scripts?

Hey,

Jeg har nogle scripts som er lidt cpu krævende. De bliver afviklet +25000 gange i døgnet og jeg kunne godt tænke mig at det gik lidt stærkere :)

Jeg har hørt om Mod_Perl men findes der en metode der ikke kræver ændring af de enkelte scripts?

Installationen er RedHat 7.2 med standard installation af Apache og Perl o.s.v.
Avatar billede erikjacobsen Ekspert
25. marts 2002 - 21:56 #1
Det giver en 3-4 sekunder til hver, hvis de ellers er jævnt fordelt
over døgnet. Man hvad laver dine scripts? Opslag i databaser?
Tunge numeriske beregninger? Inden vi skifter noget ud, kunne
det jo være vi kunne lave noget smart.
Avatar billede airforce1 Nybegynder
25. marts 2002 - 22:36 #2
Udover disse scripts har serveren også andre domæner og funktioner, bl.a. mailserver, ftp server, MRTG m.m. Det er såmend heller ikke fordi serveren er decideret overbelastet, men idet jeg snart går igang med nogle nye cpu krævende ting så ville det være rart at få minimeret serverens belastning, på de scripts som aligevel ikke har været ændret i 2+ år :)

De enkelte scripts laver opslag i en flad tekstfil, ændrer nogle tal, skriver til filen igen og returnerer svaret.
Avatar billede erikjacobsen Ekspert
25. marts 2002 - 22:40 #3
Det lyder meget som om en database kunne være svaret. Evt
på en dedikeret maskine.

Hvor store er tekstfilerne, og genskrives de hver gang?
Avatar billede airforce1 Nybegynder
25. marts 2002 - 22:49 #4
Yep. Det ultimative ville være at skrive perl filerne om til f.eks. MySQL eller Postgre SQL. Men idet jeg ikke selv har den store forstand på perl - så har den løsning nok lange udsigter :) Jeg kunne nok skrive lidt af det i PHP, meeeen at flette det hele sammen med perl o.s.v. er lidt uoverskueligt synes jeg :)

Der er vel 1000+ tekstfiler i mappen. De enkelte tekstfiler er som sådan ikke så store, men jeg tror det er hele den procedure med at åbne, skrive og lukke filen der er omstændig for serveren. Sql kunne nok klare det mere "elegant"
Avatar billede erikjacobsen Ekspert
25. marts 2002 - 22:56 #5
Ja, en SQL-server vil typisk holde forbindelsen åben.

Ellers har jeg ikke en idé hvad der ville kunne få det til at
køre mærkbart hurtigere. Har du alle 1000+ filer i samme
katalog, er søgningen efter filen (altså filnavnet) lidt kostbart.
Måske en opdeling i et passende antal kataloger, fx. ca. 30
med ca 30 filer i hver.

Men det er kun en teori :)
Avatar billede eeyore Nybegynder
19. april 2002 - 01:39 #6
Enig i, at en DB ville gøre det hurtigere. Kig evt. på modulet DBI (kan findes på http://www.cpan.dk). Efter installation (som angivet i en eller anden readme-fil), kan dokumentationen læses ved at skrive "perldoc DBI" på unix-prompten.

Men hvis scriptet udføres mange gange (og det gør det jo åbenbart), sådan at det afsluttes og startes igen, giver det et overhead, fordi perl-koden kompiles hver gang, inden afvikling.

Jeg går ud fra, det så er CGI-scripts, siden du foreslår mod_perl? Mod_perl fjerner kompilerings-overheaden, da koden kun kompiler ved server-opstart. Mod_perl er egentlig lavet til at afvikle Perl Moduler (.pm), altså ikke scripts - men et almindeligt script kan afvikles under mod_perl med modulet Apache::Registry (som kompiler scriptet hver gang, koden ændres).

Det er rigtigt, at ikke alle CGI-scripts kan overføres, især hvis man har lavet "beskidt kode" :-) Men hvis man kører med direktivet "use strict", bør det gå....
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester