proc_open(): fork failed-Canot allocate memory 해결 방법
이 기사는 프로그래밍 학자의 비망록을 처음 다루는 기사이며, 동시에 다른 초보자들에게 조금이나마 도움이 되었으면 좋겠다고 생각합니다.
이번에 Laavel에서 S3를 처리하기 위해league/flystem-aws3-v3 패키지를 설치하면
proc_open(): fork failed - Cannot allocate memory
오류(OOM 오류)가 발생하기 때문에 해결 방법을 비망록으로 정리하려고 합니다.그나저나 Laavel 애플리케이션은 AWS EC2 인스턴스에서 git clone을 수행하는 상태입니다.
만약 무슨 잘못이 있으면 지적해 주세요.
오류 내용:
proc_open(): fork failed - Cannot allocate memory
Amazon S3 사용을 위한 패키지를 Laavel에 설치한 후 다음 오류가 발생했습니다.$ composer require league/flysystem-aws-s3-v3:^1.0
Installation failed, reverting ./composer.json to its original content.
The following exception is caused by a lack of memory or swap, or not having swap configured
Check https://getcomposer.org/doc/articles/troubleshooting.md#proc-open-fork-failed-errors for details
PHP Warning: proc_open(): fork failed - Cannot allocate memory in phar:///usr/bin/composer/vendor/symfony/console/Application.php on line 952
Warning: proc_open(): fork failed - Cannot allocate memory in phar:///usr/bin/composer/vendor/symfony/console/Application.php on line 952
실행 결과에 오류 정보의 링크 대상이 나열되어 있습니다. 다음 링크를 참고하여 오류를 해결하십시오.proc_open (): fork failed erross 해결 절차
위의 링크를 보니 이번 오류는
VPSのメモリが不足し、スワップ領域が有効になっていないために発生する
인 것 같습니다.이 오류를 해결하기 위해 몇 가지 설정이 필요합니다. 다음은 절차를 총괄하겠습니다.
1. 오류가 발생한 스토리지 사용 확인
$free -m
명령을 실행하여 스토리지 사용을 확인합니다.[ec2-user@ ~]$ free -m
total used free shared buff/cache available
Mem: 956 531 307 0 117 296
Swap: 0 0 0
실행 결과의 첫 번째 줄에 메가바이트 단위의 메모리 사용 상황을 보여 줍니다.이번 오류는 이 메모리를 초과해서 사용할 수 있는 용량의 패키지를 설치하려고 시도했기 때문이라고 생각합니다.
두 번째 행의 "Swap:"에는 스왑 영역이 표시됩니다.
이 교환 구역이 이번 오류 해결의 관건이다.
※ "used"가 큰 경우에는 교환 영역에 큰 부담이 있습니다.
2. Swap 영역 만들기
다음 명령의
/bin/dd if=/dev/zero of=ファイル bs=バイト数 count=個数
×수 크기의 Swap 영역[ec2-user@ ~]$ sudo /bin/dd if=/dev/zero of=/var/swap.1 bs=1M count=1024
1024+0 レコード入力
1024+0 レコード出力
1073741824 バイト (1.1 GB) コピーされました、 6.61102 秒、 162 MB/秒
コマンドとオプションの説明
명령하다설명
dd
파일을 지정된 입력 출력 블록 크기(기본적으로 표준 입력에서 표준 출력)로 복사합니다.
dd 옵션
설명
if= 파일
표준 입력이 아닌 파일에서 읽기.장치 파일도 "/dev/zero"는 NULL 문자(0x00)를 계속 출력하는 특수 장치임을 지정할 수 있습니다.
off=파일
표준 출력 대신 파일을 씁니다.장치 파일도 이번에 swap이라고 지정할 수 있습니다.파일 이름 1
bs= 바이트 수
한 번에 읽기 및 쓰기 가능한 블록 크기(바이트 수)에 지정된 바이트 수와 블록 크기에는 두 가지 단위를 사용할 수 있습니다.1024의 곱셈으로 지정된 경우 K, M, G, T, P, E, Z, Y, 1000의 곱셈으로 지정된 경우 KB, MB.사용
개수
bs 지정한 크기의 블록을 입력에서 복사 개수
3. 제작된 파일을 Swap 영역으로 설정
mkswap
생성된 파일을 Swap 영역으로 설정하는 명령을 실행합니다.[ec2-user@ ~]$ sudo /sbin/mkswap /var/swap.1
mkswap: /var/swap.1: パーミッション 0644 は安全な値ではありません。 0600 をお勧めします。
スワップ空間バージョン 1 を設定します。サイズ = 1024 MiB (1073737728 バイト)
ラベルはありません, UUID=8696fe3c-10cd-4202-8191-384fb71773af
Swap 영역에 대한 파일 사용 권한을 변경할 때$ sudo /bin/chmod 0600 /var/swap.1
4. Swap 영역 활성화swapon
명령을 실행한 후 생성된 Swap 영역이 적용됩니다.[ec2-user@ ~]$ sudo /sbin/swapon /var/swap.1
swapon: /var/swap.1: パーミッション 0644 は安全な値ではありません。 0600 をお勧めします。
5. 제작된 스웩 영역 확인마지막으로
$ free -m
명령을 실행하여 스토리지 사용을 확인하십시오.Swap: 지정된 치수가 반영되면 성공합니다.
[ec2-user@ ~]$ free -m
total used free shared buff/cache available
Mem: 956 537 66 0 351 281
Swap: 1023 0 1023
Sawp 영역에 대한 설정이 완료되었습니다.이렇게 하면 잘못은 해결할 수 있다.
보완: Swap 영역 제거
Swap 영역을 삭제할 때는 다음 절차를 따르십시오.
1. Swap 파일 비활성화
다음 명령을 사용하여 Swap 파일을 해제하십시오.
$ sudo swapoff /swapファイル名
2. Swap 영역의 사용 상태를 표시하는 명령을 실행하여 비활성화된 Swap 영역이 표시되지 않았는지 확인합니다.proc_open(): fork failed
Swap 영역의 사용을 확인하려면 명령을 실행하십시오.비활성화된 Swap 영역을 표시하지 않으면
$ swapon -s
명령이 성공적으로 실행됩니다.$ swapon -s
Filename Type Size Used Priority
3. Swap 영역에서 Swap 파일 삭제$ sudo swapoff /swapファイル名
비활성화된 Swap 파일을 제거하려면 명령을 실행하십시오.$ sudo rm Swapファイル名
참고 문헌Composer docs proc_open(): fork failed errors
dd(1) — Linux manual page
Reference
이 문제에 관하여(proc_open(): fork failed-Canot allocate memory 해결 방법), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/kouki_o9/items/e329db48e002b812f14b텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)