Fatal Error Insufficient shared memory!の対応
概要
PHPのバージョン確認しようとするとエラー(Fatal Error Insufficient shared memory!)が出たので対応メモ。
環境
クラウドサービス:Microsoft Azure
オペレーティングシステム:Linux(almalinux 8.8)
サイズ:Standard B1s(1 vcpu, 1 GiB メモリ)
エラー確認
# php -v
Fri May 10 11:59:33 2024 (101741): Fatal Error Insufficient shared memory!
どうやらメモリ不足で正常に動作していない様子。
Swapも割り当てられていない様子。
# free -h
total used free shared buff/cache available
Mem: 885Mi 381Mi 145Mi 22Mi 359Mi 345Mi
Swap: 0B 0B 0B
改善対応
swapfileを作成することで、メモリ量を超えたメモリアクセスも可能にしてみる。
Swap領域を無効化
# swapoff /mnt/resource/swapfile
swapoff: /mnt/resource/swapfile: swapoff が失敗しました: 無効な引数です
そもそも現状で無効だった様子。
既存のswapfile削除
# rm /mnt/resource/swapfile
rm: 通常の空ファイル '/mnt/resource/swapfile' を削除しますか? y
swapfileを2GBで、再作成
# dd if=/dev/zero of=/mnt/resource/swapfile bs=1M count=2048
2048+0 レコード入力
2048+0 レコード出力
2147483648 bytes (2.1 GB, 2.0 GiB) copied, 38.5015 s, 55.8 MB/s
# chmod 600 /mnt/resource/swapfile
# ll -h /mnt/resource/
合計 2.1G
drwx------. 2 root root 16K 5月 10 08:19 lost+found
-rw-------. 1 root root 2.0G 5月 10 13:43 swapfile
# mkswap /mnt/resource/swapfile
スワップ空間バージョン 1 を設定します。サイズ = 2 GiB (2147479552 バイト)
ラベルはありません, UUID=34f63911-0113-42ca-9a8b-e878bded43f0
Swap領域を有効化
# swapon /mnt/resource/swapfile
# swapon -s
ファイル名 タイプ サイズ 使用済み 優先順位
/mnt/resource/swapfile file 2097148 0 -2
再確認
メモリ
# free -h
total used free shared buff/cache available
Mem: 886Mi 319Mi 57Mi 11Mi 509Mi 422Mi
Swap: 2.0Gi 0B 2.0Gi
PHP
# php -v
PHP 8.2.18 (cli) (built: Apr 12 2024 08:07:11) (NTS)
Copyright (c) The PHP Group
Zend Engine v4.2.18, Copyright (c) Zend Technologies
with Zend OPcache v8.2.18, Copyright (c), by Zend Technologies