Thursday, 28 December 2006
OpenBSD tuning
« Opbygning af en ny server | Main | Godt nytår 2007 »Skal en OpenBSD server tunes?
Ja selvfølgelig skal enhver server der skal sættes op til produktion tunes, også en OpenBSD. Når man tuner et system forsøger man at indstille systemet til at afvikle sine applikationer hensigtsmæssigt med så få flaskehalse som muligt. Det betyder at et godt tunet system vil bruge hukommelsen hensigtsmæssigt samtidig med at CPU kører med høj belastning og netværket ikke forsinker pakkerne mere end nædvendigt.
Hvordan tuner man så en OpenBSD?
Sysctl kontroller
Et af de primære steder at tune OpenBSD er /etc/sysctl.conf der specificerer mange ting til kernen, herunder send og receivespace bufferstørrelser for TCP og UDP protokollerne.
Hvilke værdier skal man så pille ved? De nedenstående kan du trygt ændre ved og som angivet er der tunet specielt for Postgresql databasen, ansporet af den README der fulgte med Postgresql pakken jeg installerede. Filen findes under /usr/local/share/doc/postgresql/README.OpenBSD - og hele kataloget /usr/local/share/doc indeholder mange gode guldkorn!
Når bufferstørrelserne sættes op vil serveren bruge mere hukommelse, men vil generelt kunne behandle flere pakker.
# tuning net.inet.tcp.recvspace=65535 net.inet.tcp.sendspace=65535 net.inet.udp.recvspace=65535 net.inet.udp.sendspace=32768 # # postgresql tuning kern.seminfo.semmni=256 kern.seminfo.semmns=2048 kern.shminfo.shmmax=50331648
En pudsighed er at mange UNIX operativsystemer leveres med ret lave værdier for disse buffere. En kyndig UNIX konsulent vil ændre disse, men mange steder vil servere der har kostet millioner køre med standardindstillingerne og derfor give en ringere oplevelse end hvis man udførte tuning!
Hukommelse: datasize og stacksize
Et andet godt sted at tune OpenBSD er dernæst /etc/login.conf som angiver grænser for brugere på systemet, herunder de bruger IDs der kører serverfunktioner. Såfremt man skal afvikle JAVA programmer og eksempelvis Apache Tomcat som jeg benytter skal man enten oprette en bruger der ligger i login(1) class daemon eller måske endda oprette en helt anden bruger og klasse. Da min OpenBSD JAVA server primært skal bruges til J2EE med Tomcat er det nemmeste at benytte den eksisterende daemon klasse.
Standardindstillingerne for en bruger er:
default:\
:path=/usr/bin /bin /usr/sbin /sbin /usr/X11R6/bin /usr/local/bin:\
:umask=022:\
:datasize-max=512M:\
:datasize-cur=512M:\
:maxproc-max=128:\
:maxproc-cur=64:\
:openfiles-cur=64:\
:stacksize-cur=4M:\
:localcipher=blowfish,6:\
:ypcipher=old:\
:tc=auth-defaults:\
:tc=auth-ftp-defaults:
og de ændringer som jeg har ændret for min Tomcat bruger er:
:datasize-max=896M:\
:datasize-cur=896M:\
:maxproc-max=512:\
:maxproc-cur=512:\
:openfiles-cur=512:\
:stacksize-cur=128M:\
Det er formentlig overkill, men så kan man afvikle Tomcat med mere hukommelse med følgende parametre: -Xmx256M -Xms32M. Du bestemmer selv hvor meget hukommelse der skal allokeres, men der er visse grænser der skal overholdes alt efter hvilken hardwarearkitektur du bruger. 256MB og 32MB burde dog være fint på både OpenBSD/amd64 og OpenBSD/i386 med en server med mindst 512MB memory.
Apache HTTPD tuning
Det sidste sted jeg vil omtale er så adgangen til serveren og der har jeg valgt at bruge Apache HTTPD version 2.0 foran min Tomcat server.
Der findes mange ressourcer til Apache HTTPD, men jeg har haft stor glæde af følgende to bøger som bør stå på hylden hos alle der driver en server med Apache HTTPD.
- Apache Cookbook af Ken Coar, Rich Bowen
- Apache Security af Ivan Ristic
Min httpd.conf til Apache HTTPD fylder kun 284 linier med kommentarer og kun 134 linier er reelt indstillinger til serveren, resten er kommentarer og tomme linier. Konfigurationsfilen til virtuelle hosts er så yderligere 183 linier (121 uden kommentarer). Hertil kommer til sidst SSL konfigurationen som er 78 linier, primært fordi SSL er noget snavs at konfigurere :-)
Konklusionen
Konklusionen nu er at der er mange ting du bør gøre når du installerer en ny server, enten fordi du ved at det på længere sigt vil forbedre oplevelsen, eller fordi du kender bestemte applikationer som kræver specielle indstillinger - som eksempelvis Postgresql, JAVA og Tomcat der gerne vil have mere hukommelse og mulighed for at åbne flere filer samtidigt.
Posted by at CET 13:12 28/12/2006 in OpenBSD

