1. ホーム

Linux: [Errno 12] メモリを割り当てられない問題を解決する。

2022-02-13 16:05:42
<パス

1.問題の原因

Linux(CentOS系)を使ってJavaをインストールすると、コマンドラインにプロンプトが表示されます。

Error downloading packages:

  libXcursor-1.1.15-1.el7.x86_64: [Errno 5] [Errno 12] Cannot allocate memory
  
  1:xorg-x11-font-utils-7.5-21.el7.x86_64: [Errno 5] [Errno 12] Cannot allocate memory


Cannot allocate memory

# swapon --show Linuxサーバーに十分なメモリが割り当てられていないことを示しています。

2.ソリューション

(1) サーバーの基本情報を確認する

スワップ使用量。

NAME TYPE SIZE USED PRIO
/swap file 260M 260M -1



結果

# df -h


ディスクの使用量です。

Filesystem Size Used Avail Use% Mounted on
devtmpfs 494M 0 494M 0% /dev
tmpfs 504M 0 504M 0% /dev/shm
tmpfs 504M 58M 447M 12% /run
tmpfs 504M 0 504M 0% /sys/fs/cgroup
/dev/sda2 22G 2.7G 18G 14% /
/dev/sda1 380M 142M 218M 40% /boot
tmpfs 101M 0 101M 0% /run/user/0


結果

# fallocate -l 1G /swapfile


(2) スワップファイルの新規作成とパーミッションの追加

# chmod 600 /swapfile


そして、パーミッションを追加すること。

-rw------- 1 root root 1.0G Oct 26 22:02 /swapfile


効果

# mkswap /swapfile
# swapon /swapfile


(3) 新しいswapファイルを有効にする

# swapon --show


新しいスワップ状況を表示する。

NAME TYPE SIZE USED PRIO
/swap file 260M 260M -1
/swapfile file 1024M 0B -2


効果

cp /etc/fstab /etc/fstab.bak
echo '/swapfile none swap sw 0 0' | tee -a /etc/fstab


(4) この操作を恒久化する。さもなければ、上記の操作を再開しても効果がない。

free -h


(5) 完了、再び全体の効果を見ることができます。

          total used free shared buff/cache available
Mem: 1.0G 736M 94M 50M 176M 74M
Swap: 1.3G 259M 1.0G


効果

          total used free shared buff/cache available
Mem: 1.0G 736M 94M 50M 176M 74M
Swap: 1.3G 259M 1.0G



参考

  1. OSError: [Errno 12] メモリを割り当てることができない #5 ;
  2. Ubuntu 16.04でスワップ領域を追加する方法 .