Rumah  >  Artikel  >  Operasi dan penyelenggaraan  >  Bagaimana untuk menyelesaikan masalah penggunaan ruang Linux Swap yang tinggi

Bagaimana untuk menyelesaikan masalah penggunaan ruang Linux Swap yang tinggi

WBOY
WBOYke hadapan
2023-05-27 12:37:262945semak imbas

    Apakah itu swap?

    Ruang swap ialah kawasan pada cakera, yang boleh menjadi partition, fail atau gabungan daripadanya .

    Ringkasnya, apabila memori fizikal sistem ketat, Linux akan menyimpan data yang jarang diakses dalam memori untuk bertukar, supaya sistem mempunyai lebih banyak memori fizikal untuk melayani setiap proses, dan apabila sistem memerlukan Apabila mengakses kandungan yang disimpan pada swap, data pada swap dimuatkan ke dalam memori Inilah yang sering kita panggil swap out dan swap in.

    Mengapa kita memerlukan pertukaran?

    Untuk menjawab soalan ini, kita perlu menjawab apakah faedah yang dibawa oleh pertukaran kepada kita.

    Untuk beberapa aplikasi besar (seperti LibreOffice, editor video, dll.), sejumlah besar memori akan digunakan semasa proses permulaan, tetapi memori ini selalunya hanya digunakan semasa permulaan, dan tidak akan digunakan semasa operasi seterusnya Memori ini jarang digunakan lagi. Dengan swap, sistem boleh menyimpan bahagian data memori yang tidak digunakan dengan cara ini ke swap, dengan itu melepaskan lebih banyak memori fizikal untuk digunakan oleh sistem.

    Fungsi hibernasi bagi banyak pengedaran (seperti ubuntu) bergantung pada partition swap Apabila sistem hibernasi, data dalam memori akan disimpan ke partition swap, dan kemudian data akan disimpan apabila. sistem bermula pada kali seterusnya Memuatkan ke dalam memori boleh mempercepatkan permulaan sistem, jadi jika anda ingin menggunakan fungsi hibernasi, anda mesti mengkonfigurasi partition swap, dan saiznya mestilah lebih besar daripada atau sama dengan memori fizikal.

    Dalam sesetengah kes, ingatan fizikal adalah terhad, tetapi apakah yang perlu saya lakukan jika saya ingin menjalankan program yang memakan memori? Pada masa ini, anda boleh mencapai matlamat dengan mengkonfigurasi ruang swap yang mencukupi Walaupun ia agak perlahan, ia sekurang-kurangnya boleh berjalan.

    Walaupun ingatan fizikal mencukupi dalam kebanyakan kes, selalu terdapat beberapa situasi yang tidak dijangka, seperti proses yang memerlukan lebih banyak memori daripada yang dijangkakan, atau proses yang mengalami kebocoran memori, dsb. Apabila ingatan Apabila ia tidak mencukupi , pembunuh OOM kernel akan dicetuskan Menurut konfigurasi pembunuh OOM, beberapa proses akan dimatikan atau sistem akan dimulakan semula secara langsung (lalai adalah untuk mematikan proses yang menggunakan paling banyak memori terlebih dahulu , anda boleh Menggunakan swap sebagai ingatan, walaupun ia agak perlahan, sekurang-kurangnya memberi kami peluang untuk menyahpepijat, mematikan proses atau menyimpan kemajuan kerja semasa.

    Jika anda telah melihat pengurusan memori Linux, anda akan tahu bahawa sistem akan menggunakan sebanyak mungkin memori percuma untuk cache mempercepatkan kelajuan I/O sistem, jadi jika anda boleh bergerak kurang biasa digunakan data memori ke Pada swap, lebih banyak memori fizikal akan digunakan untuk cache, dengan itu meningkatkan prestasi keseluruhan sistem.

    Keburukan swap?

    Kebaikan swap telah diperkenalkan di atas, tetapi bagaimana pula dengan keburukan swap? Swap disimpan pada cakera Kelajuan cakera adalah beberapa urutan magnitud lebih perlahan daripada memori Jika anda terus membaca dan menulis swap, ia pasti akan memberi kesan kepada prestasi sistem, terutamanya apabila sistem memori adalah sangat ketat. Kekerapan ruang swap akan menjadi sangat tinggi, menyebabkan sistem berjalan dengan sangat perlahan, seolah-olah mati Pada masa ini, menambah memori fizikal adalah satu-satunya penyelesaian.

    Memandangkan sistem akan mengalihkan data memori yang jarang digunakan secara automatik ke swap, untuk program desktop, ia mungkin menyebabkan jeda kecil apabila anda meminimumkan program dan kemudian membukanya semula, kerana anda perlu mengalihkan data memori pada swap Data dimuat semula ke dalam memori.

    Adakah anda mahu bertukar?

    Perkara di atas memperkenalkan apa itu swap serta kelebihan dan kekurangannya, jadi patutkah kita mengkonfigurasi swap? Jawapannya ialah: ia bergantung.

    Perkara berikut membincangkan pilihan swap untuk pelayan dan persekitaran desktop dalam tiga situasi: memori tidak mencukupi, memori hampir tidak mencukupi dan memori yang mencukupi.

    Memori tidak mencukupi

    Sama ada desktop atau pelayan, apabila ingatan fizikal jelas tidak mencukupi dan anda ingin menjalankan program, menambah swap adalah satu-satunya pilihan yang Lebih perlahan adalah lebih baik daripada tidak bekerja sama sekali.

    Memori hampir tidak mencukupi

    Adalah disyorkan untuk mengkonfigurasi swap, supaya kernel akan mengalihkan data luar biasa dari memori ke swap, supaya lebih banyak memori fizikal tersedia untuk panggilan sistem dan meningkatkan sistem prestasi. Pada masa yang sama, ia juga mengelakkan proses keluar yang tidak normal disebabkan oleh memori fizikal yang tidak mencukupi dan meningkatkan kestabilan sistem Walau bagaimanapun, untuk pelayan, adalah perlu untuk mengehadkan atau memantau penggunaan ruang swap melebihi jangkaan pertukaran masuk/keluar adalah kerap, , langkah mesti diambil tepat pada masanya, jika tidak prestasi akan sangat terjejas

    Memori yang mencukupi

    Secara teorinya, jika ingatan fizikal mencukupi dan tiada fungsi hibernasi diperlukan , maka swap tidak berguna, tetapi isu utama ialah Sukar bagi kami untuk memastikan bahawa memori fizikal mencukupi dalam apa jua keadaan, kerana sentiasa ada situasi yang tidak dijangka, seperti beberapa proses yang menggunakan lebih banyak memori daripada jangkaan, tekanan pelayan melebihi jangkaan, kebocoran ingatan, dsb.

    Pada masa ini, kita jelas kehabisan ingatan. Mengapa mysql secara langsung menyebabkan pelayan kehabisan memori

    Kemudian mengapa pertukaran berlaku dalam pelayan mysql kami?

    Andaikan ingatan fizikal kita ialah 16G dan swap ialah 4G. Jika MySQL sendiri sudah menduduki 12G memori fizikal, dan pada masa yang sama program atau modul sistem lain memerlukan memori 6G, maka sistem pengendalian mungkin memetakan sebahagian daripada ruang alamat yang dimiliki oleh MySQL untuk bertukar.

    Secara terang-terangan, sistem berpendapat bahawa ruang yang diduduki oleh mysql anda adalah terlalu besar dan tidak membenarkan anda melakukan perkara-perkara istimewa. Ia mesti memberi ruang kepada kawasan proses saya yang lain untuk menggunakan memori, jadi anda pergi ke pertukaran yang lebih perlahan untuk bermain.

    Penghuni memori terbesar dalam mysql ialah innodb_buffer_pool_size, jadi anda harus mempertimbangkan sama ada nilai ini ditetapkan secara tidak munasabah pada kali pertama?

    Penggunaan memori MySQL dibahagikan kepada:

    • 1 Penggunaan memori peringkat sesi: seperti sort_buffer_size, dsb., setiap sesi akan dibuka a sort_buffer_size Untuk melaksanakan operasi pengisihan

    • 2. Penggunaan memori global: contohnya: innodb_buffer_pool_size, dsb., segmen memori kongsi global

    Ini ialah apa yang saya fikir kita Bahagian yang tidak profesional dalam DBA ialah dia tidak mempertimbangkan situasi pertama dan menyemak penggunaan memori pada tahap sesi Sebaliknya, dia secara langsung memberitahu saya untuk mengurangkan saiz innodb_buffer_pool

    Apakah kumpulan penimbal InnoDB. cache? Apa gunanya? Apakah tetapan yang sesuai?

    Cache data jadual dan data indeks, muatkan data pada cakera ke dalam kumpulan penimbal, elakkan cakera IO untuk setiap akses dan percepatkan akses.

    Prestasi konkurensi MySQL adalah berkadar terus dengan saiz memori yang diperuntukkan oleh Buffer Pool Lebih besar memori yang diperuntukkan, lebih baik prestasi konkurensinya. Patutkah kesemua 99% memori mesin diperuntukkan kepada Kolam Penampan?

    Sudah tentu tidak! Apatah lagi bahawa kernel sistem pengendalian juga memerlukan beberapa gigabait memori Sebagai tambahan kepada Buffer Pool, MySQL juga mempunyai banyak struktur data memori yang lain ini semua memerlukan memori, jadi idea di atas pastinya tidak boleh dilaksanakan.

    Nisbah yang lebih munasabah ialah saiz memori Buffer Pool menyumbang 50% ~ 60% daripada jumlah memori mesin.

    Anda boleh menyemak status hit melalui show engine innodb statusG; Apabila kadar hit tidak mencapai lebih daripada 97%, anda boleh mempertimbangkan untuk menambah memori, contohnya , jumlah penulisan kepada induk adalah besar, tetapi bilangan bacaan adalah kecil

    Dalam kes lain, jika ia tidak mencapai lebih daripada 97%, untuk situasi di mana terdapat banyak bacaan. jika ia tidak mencapai lebih daripada 98%, ia bermakna penimbal tidak mencukupi. Sebaliknya, jika mata diberikan 20% daripada hit memori boleh mencapai 100%, dan terdapat banyak. halaman percuma, yang bermaksud bahawa ia sudah mencukupi, anda juga boleh mengira mengikut halaman percuma untuk mengurangkan sedikit memori itu untuk tujuan lain

    Atas ialah kandungan terperinci Bagaimana untuk menyelesaikan masalah penggunaan ruang Linux Swap yang tinggi. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

    Kenyataan:
    Artikel ini dikembalikan pada:yisu.com. Jika ada pelanggaran, sila hubungi admin@php.cn Padam