Mga counter ng trapiko ng OpenVPN laban sa I/O ng disk: tatlong magkaibang numero
Ang mga byte ng interface, mga counter ng karakter ng proseso at mga pagsulat sa storage ay may sinusukat na magkaibang gawain. Ikumpara ang mga ito bago tantiyahin ang mga disk mula sa bolyum ng tunnel.
Magpadala ng malaking file sa tunnel at ang counter ng interface ay tataas nang kasinglaki ng file. Walang anuman sa numerong iyon ang nagsasabing umabot sa disk ang parehong bolyum. Tatlong magkaibang sukat ang inihahambing sa mga usapang ito, at sumasagot sila sa tatlong magkaibang tanong: gaano karaming trapiko ang tumawid sa isang layer ng network, ilang byte ang binasa at isinulat ng isang proseso sa pamamagitan ng mga system call, at gaano karaming trabaho ang umabot sa layer ng storage.
Ang paghahambing ng una sa ikatlo ang karaniwang pagkakamali, at nagbubunga ito ng alinman sa multo na problema sa disk o plano sa kapasidad na binabalewala ang mga pagsulat na talagang nangyayari. Ang tatlo ay mapaghihiwalay, at bawat isa ay may tamang gamit.
Tatlong numero na napagkakamalang isa
Inilalarawan ng mga counter ng interface ang trapikong hinahawakan sa isang layer ng network. Ito ang tamang numero para sa bandwidth, para sa laki ng tunnel at para sa mga modelong pagsingil na naglalagay ng presyo sa transit.
Inilalarawan ng mga counter ng karakter ng proseso ang mga byte na inilipat sa pamamagitan ng read at write na tawag sa anumang descriptor, kasama ang mga pipe, terminal at character device. Ito ang tamang numero para sa tanong kung gaano kaabala ang isang proseso sa hangganan ng system call, at hindi ito singil sa storage.
Inilalarawan ng mga counter ng storage ang mga byte na sinubukang ilipat ng kernel papunta o mula sa isang block device. Ito ang tamang numero para sa pagpaplano ng kapasidad, na may kondisyon na idinokumento ng kernel ang sarili nitong mga limitasyon sa accounting: ang mga read na naka-cache ay hindi nagiging read ng storage, at ang pagsulat na kanselahin mamaya ay hindi nagiging kumpletong pagsulat sa device.
| Measurement | Question it answers |
|---|---|
| Interface bytes | How much traffic crossed this layer |
rchar and wchar | How much data the process moved through system calls |
read_bytes and write_bytes | How much work reached the storage layer |
Bakit ang file descriptor ay hindi pagsulat sa disk
Isang VPN sa user space ay nakikipagpalitan ng mga packet sa kernel sa pamamagitan ng TUN device, na isang character device at hindi karaniwang file. Ang pagbasa mula rito ay naghahatid ng packet; ang pagsulat dito ay naglalagay ng packet. Walang pahina ng nilalaman ng file na inihahanda para sa storage, at walang landas ng file system na kasangkot.
Iyon ang dahilan kung bakit ang abalang tunnel ay makakapagpakita ng napakalaking counter ng karakter na halos walang counter ng storage. Talagang inilipat ng proseso ang mga byte na iyon, at talagang hindi kailangan ng kernel ang disk para gawin iyon.
cat /proc/$(pgrep -n openvpn)/io
ip -s link show tun0
Basahin ang unang output bilang pinagsama-sama mula nang magsimula ang proseso, hindi bilang rate. Ang pangalawa ay nagbibigay ng pananaw ng interface sa parehong trapiko. Ang malaking agwat ng dalawa ay inaasahan at hindi nagpapahiwatig ng leak, pila o maling configuration.
Saan talaga nanggagaling ang mga byte
Ang patuloy na output ay may sariling badyet, at pinapatakbo ito ng mga operasyon at hindi ng payload. Ang detalyadong antas ng log, listahan ng kliyenteng madalas magbago, o error na paulit-ulit sa masikip na loop ay makakabuo ng malaking pagsulat habang kakaunti ang dala ng tunnel.
Ang status file ay isang snapshot na muling isinusulat sa isang agwat, kaya nakadepende ang gastos nito sa agwat at sa dami ng record na nilalaman nito. Hindi ito tumatakbong kopya ng trapiko ng bawat kliyente, at ang pagpapaikli ng agwat ay nagbabago ng bolyum ng pagsulat nang hindi binabago ang bolyum ng trapiko.
Mahalaga ang pagmamay-ari kapag hinahanap mo ang mga pagsulat na iyon. Kung ibinibigay ng serbisyo ang mga mensahe sa isang logging daemon, ang journal o log file ay isinusulat ng daemon na iyon, at lumalabas ang mga byte sa accounting ng daemon at hindi sa sariling counter ng proseso ng VPN. Ang pagtingin lamang sa proseso ng VPN ay hindi nagpapaliwanag ng aktibidad ng disk ni ng kawalan nito.
Madaling mapalampas ang iba pang nag-aambag: pagbasa ng mga sertipiko at configuration sa pagsisimula, mga hook na nagsusulat ng sariling record, mga plugin ng accounting, mga dump ng pag-crash at mga kargang walang kaugnayan sa parehong host. Wala sa mga ito ang dapat tantiyahin sa pamamagitan ng pagtutumbas ng trapiko ng tunnel sa mga naisulat na byte.
Ang pagbasa sa bawat counter nang tama
Tatlong detalye ang nagtatakda kung may kahulugan ang isang paghahambing. Mahalaga ang pagkakakilanlan ng proseso, dahil nire-reset ng restarted na serbisyo ang mga counter nito. Mahalaga ang agwat ng oras, dahil ang pinagsama-samang bilang at ang graph kada segundo ay magkaibang sukat. At mahalaga ang yunit, dahil ang kasalukuyang laki ng log file ay hindi rin rate.
grep -E 'rchar|wchar|read_bytes|write_bytes' /proc/$(pgrep -n openvpn)/io
du -sh /var/log/openvpn 2>/dev/null
journalctl --disk-usage
Kung pinaghihinalaan mo ang tunay na pagsulat ng payload, maghanap ng bahaging ang trabaho ay mag-imbak ng payload: tool sa paghuli ng packet, proxy na nag-cache ng katawan, plugin na nag-archive. Gumagawa ang mga ito ng trapiko patungo sa storage na lumalaki ayon sa hinihiling sa kanilang itala, at kabilang sila sa hiwalay na desisyon sa patakaran tungkol sa pagpapanatili at pag-access.
Pagpaplano ng kapasidad gamit ang tamang numero
Sukatin ang landas ng packet gamit ang mga numero ng network: throughput, cryptographic processing at paggalaw ng memory. Sukatin ang storage gamit ang mga pagpapasyang obserbabilidad na talagang ginawa mo: antas ng log, pagpapanatili, agwat ng status at anumang paghuli na sadyang pinagana.
Ang paghihiwalay ng dalawang badyet na ito ay nagpapadali rin sa pagbasa ng mga insidente. Ang punong disk na may katamtamang trapiko ng tunnel ay tumuturo sa mga log, paghuli o sa isang bagay na walang kaugnayan, at hinding-hindi ito ipapaliwanag ng counter ng interface. Ang sagad na link na may tahimik na log ay tumuturo sa kabilang direksyon.
Ang paghahambing na sulit gawin ay sa pagitan ng mga sukat na magkapareho ng uri. Ang mga byte ng interface laban sa mga byte ng interface sa paglipas ng panahon ay nagsasabi sa iyo tungkol sa landas. Ang mga pagsulat sa storage laban sa kapasidad ng storage ay nagsasabi sa iyo tungkol sa pagpapanatili. Ang cross-comparison, trapiko laban sa disk, ay mukhang makahulugan lamang at hinding-hindi ito ganoon.