proc_open(): fork failed-Canot allocate memory 해결 방법

4568 단어 Linux잘못초학자
개시하다
이 기사는 프로그래밍 학자의 비망록을 처음 다루는 기사이며, 동시에 다른 초보자들에게 조금이나마 도움이 되었으면 좋겠다고 생각합니다.
이번에 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 memoryAmazon 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.14. 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

좋은 웹페이지 즐겨찾기