Dalam senario ini, pelayan MySQL pada contoh mikro EC2 berulang kali ranap dengan ralat "InnoDB: mmap (x bait) gagal; errno 12." Walaupun percubaan untuk memulakan semula pelayan, isu ini berterusan. Setelah meneliti log MySQL, ternyata bahawa permulaan kumpulan penimbal InnoDB gagal kerana peruntukan memori yang tidak mencukupi.
Kolam penimbal InnoDB menyimpan data yang kerap diakses dalam memori untuk dioptimumkan prestasi operasi pangkalan data. Walau bagaimanapun, dalam kes ini, kapasiti memori terhad contoh mikro menghalang peruntukan ruang yang mencukupi untuk kumpulan penimbal. Akibatnya, InnoDB gagal untuk memulakan dan pelayan MySQL ditamatkan dengan mesej ralat.
Untuk menyelesaikan isu ini, adalah disyorkan untuk mencipta ruang swap, yang pada asasnya bertindak sebagai tambahan ingatan maya. Ini membolehkan sistem pengendalian menggunakan ruang cakera yang tidak digunakan sebagai RAM, dengan itu meningkatkan memori yang tersedia untuk operasi kritikal seperti InnoDB.
Mencipta ruang swap melibatkan langkah berikut:
dd if=/dev/zero of=/swapfile bs=1M count=1024
mkswap /swapfile
swapon /swapfile
/swapfile swap swap defaults 0 0
Jika mencipta ruang swap tidak menyelesaikan isu, penyelesaian alternatif ialah untuk menggunakan Amazon RDS (Perkhidmatan Pangkalan Data Perhubungan). RDS ialah perkhidmatan pangkalan data terurus daripada AWS yang menyediakan contoh pangkalan data khusus dengan sumber memori dan storan yang terjamin. Dengan memindahkan pangkalan data kepada tika RDS, isu peruntukan memori terhad pada tika mikro boleh dielakkan.
Atas ialah kandungan terperinci Mengapakah pelayan MySQL saya pada contoh EC2 mikro ranap dengan \'InnoDB: mmap (x bait) gagal; errno 12,\' dan bagaimana saya boleh membetulkannya?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!