Tuesday 25 August 2015

NIC Ghost

Perasan tak bila korang selesai clone atau deploy VM daripada template, korang akan dapati NIC dalam VM tu tak boleh nak set kepada alamat IP asal. Walaupun korang dah pasti yang VM asal tu dah pun ditutup dan IP tu memang tak ada server lain yang pakai.

Sebenarnya, NIC asal telah dihilangkan daripada pandangan kita atau hidden. Korang kena uninstall dulu driver NIC lama tu baru boleh set IP asal pada NIC yang baru. Cara-cara nak buang aku tunjukkan macam di bawah :-

Windows

1) Run command prompt.
2) Run command - set devmgr_show_nonpresent_devices=2
3) Run command - start devmgmt.msc
4) 

Linux

Apache – Prefork vs Worker

Ramai tau tentang Apache, tapi mungkin tak ramai yang tau tentang multi processing modules (MPMs). Dalam environment UNIX, ada dua jenis MPMs iaitu :-

1. Prefork
2. Worker

Sebelum tu kenalah paham dulu apa itu MPMs. MPMs ni kerjanya adalah untuk binding network port pada server, terima request dari client dan bahagikan tugas untuk layan setiap request tu. Contohnya kalau network port 80, semua request akan lalu port tu dan setiap request yang diterima oleh server akan dipecah-pecahkan dan diproses bergantung pada jenis MPMs yang dipilih.

So apa bezanya Prefork dan Worker?

Prefork guna multiple process dengan setiap satunya guna satu thread. Setiap process hanya urus satu connection pada satu masa. Prefork ni default MPM untuk apache.

Worker guna multiple process dengan setiap satunya guna banyak thread. Setiap thread hanya urus satu connection pada satu masa.

Nampak tak, beza Prefork dan Worker adalah penggunaan process dan thread. Apa benda process dan thread ni? Nanti aku terangkan dalam post yang lain.

Mana satu nak guna, Prefork atau Worker?

Kalau trafik website tinggi, worker lebih sesuai digunakan sebab dia guna memory yang rendah tapi setiap module dalam apache tu mestilah support multi-threaded environment. Kalau tak support jangan guna nanti apache boleh crash. Kalau crash padan muka.

Prefork pulak guna memory yang tinggi, kalau korang ada server yang ada 1TB memory aku rasa tak ada masalah nak guna prefork ni. Prefork tak perlu module yang support multi-threaded.

Kalau korang guna original atau core module dari apache sendiri, memang tak ada masalah nak guna worker sebab semua module tu support multi-threaded. Tapi masalahnya kalau guna third party punya module sebab tak semuanya support multi-threaded. 

Contoh, module mod_php tak support multi-threaded, jadi kalau running PHP gunalah Prefork tapi kalau cuma running static file (html, jpeg, etc) gunalah Worker.

Configuration Prefork

Bukak fail httpd.conf:-

 vi /etc/httpd/conf/httpd.conf

cari label prefork.

StartServers          5
MinSpareServers       5
MaxSpareServers      10
MaxClients          150
MaxRequestsPerChild   0

By default, bila start je apache, terus bagitau apache buat 5 copy diri sendiri, kekalkan 5  sekurang-kurangnya. Tapi jangan lebih dari 10 idle server. Boleh buat 150 copy diri sendiri (1 copy untuk setiap client) dan setiap copy tak ada had nak layan setiap request dari client.


Configuration Worker

Bukak fail httpd.conf:-

 vi /etc/httpd/conf/httpd.conf

cari label worker.

StartServers          2
MaxClients          150
MinSpareThreads      25
MaxSpareThreads      75
ThreadsPerChild      25
MaxRequestsPerChild   0 

Kes di atas, apache buat 2 copy bila server mula-mula start. Setiap apache boleh layan 25 client dalam satu masa. Jumlah client yang mampu di layan ada 150 (maksudnya 6 apache x 25 client).