composer를 사용하여 설치하는 동안 메모리 시스템 오류가 발생한 이야기

목적


  • composer 설치 중에 나온 메모리 시스템의 오류를 해결하는 방법을 요약합니다.

  • 구현 환경


  • 하드웨어 환경



  • 품목
    정보


    OS
    macOS Catalina(10.15.5)

    하드웨어
    MacBook Pro (13-inch, 2020, Four Thunderbolt 3 ports)

    프로세서
    2GHz 쿼드 코어Intel Core i5

    메모리
    32GB 3733MHz LPDDR4

    그래픽
    Intel Iris Plus Graphics 1536 MB


  • 소프트웨어 환경



  • 품목
    정보
    비고


    AWS EC2 인스턴스
    AmazonLinux2
    이 방법을 사용하여 이미지에서 인스턴스 만들기 → AWS EC2를 Mac에서 사용해 봅시다!

    PHP
    7.4.5
    이 방법으로 설치 → AWS EC2 AmazonLinux2 PHP 설치

    composer
    1.10.7
    이 방법으로 설치 → AWS EC2 AmazonLinux2 composer 설치



    독후감


  • 아래에 설명 된 메모리 시스템 오류가 발생하지 않고 composer 설치가 성공적으로 완료됩니다.

  • 문제까지의 경위


  • 다음과 같은 방법으로 EC2 인스턴스를 만들었다.
  • AWS EC2를 Mac에서 사용해 봅시다!

  • 아래의 방법으로 PHP7.4.X를 설치했다.
  • AWS EC2 AmazonLinux2 PHP 설치

  • 아래의 방법으로 composer를 인스톨 했다.
  • AWS EC2 AmazonLinux2 composer 설치


  • 아래 명령을 실행하여 Laravel을 설치하려고했습니다.
    $ composer global require laravel/installer
    

  • 문제



  • 아래와 같은 에러가 발생해 composer 인스톨을 실시할 수 없다.
    The following exception is caused by a lack of memory or swap, or not having swap configured
    

  • 오류의 전체 텍스트는 아래에 설명되어 있습니다.
    $ composer global require laravel/installer
    Changed current directory to /home/ec2-user/.config/composer
    Using version ^3.1 for laravel/installer
    ./composer.json has been updated
    Loading composer repositories with package information
    Updating dependencies (including require-dev)
    Package operations: 20 installs, 0 updates, 0 removals
      - Installing symfony/polyfill-php80 (v1.17.0): Downloading (100%)
        proc_open(): fork failed - Cannot allocate memory
        The archive may contain identical file names with different capitalization (which fails on case insensitive filesystems)
        Unzip with unzip command failed, falling back to ZipArchive class
    
    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
    
    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/local/bin/composer/vendor/symfony/console/Application.php on line 952
    
    Warning: proc_open(): fork failed - Cannot allocate memory in phar:///usr/local/bin/composer/vendor/symfony/console/Application.php on line 952
    
      [ErrorException]
      proc_open(): fork failed - Cannot allocate memory
    
    require [--dev] [--prefer-source] [--prefer-dist] [--fixed] [--no-progress] [--no-suggest] [--no-update] [--no-scripts] [--update-no-dev] [--update-with-dependencies] [--update-with-all-dependencies] [--ignore-platform-reqs] [--prefer-stable] [--prefer-lowest] [--sort-packages] [-o|--optimize-autoloader] [-a|--classmap-authoritative] [--apcu-autoloader] [--] [<packages>]...
    

  • 문제 해결까지의 경위



  • 에러문에 기재되어 있는 링크를 열람해 본다.
  • h tps : // 게이 t m 포세 r. 오 rg / 도 c / 아 rc c ぇ s / t 브 ぇ 쇼오 친 g. md#p로c-오펜-후-rk-후-d-에로 rs


  • 어쨌든 오류에 대한 해결 방법에 대한 설명이있었습니다.


  • 공식 문서에 따라 명령을 실행해보십시오.

  • 다음 명령을 실행하여 현재 스왑 영역을 확인합니다.
    $ free -m
    

  • 다음과 같이 출력되었다. 스왑 영역 할당이 0이 되어 버리는 것이 원인인 것 같다.
    $ free -m
                  total        used        free      shared  buff/cache   available
    Mem:            983         378         465           0         139         465
    Swap:             0           0           0
    

  • 다음 명령을 실행하여 스왑 영역을 설정합니다. ( /bin/dd: failed to open ‘/var/swap.1’: Text file busy 라고 출력되어 버린 분은 AWS의 EC2 콘솔보다 일단 인스턴스를 재기동한다.Linux의 물리 머신으로 실시중의 분도 Linux 물리 머신을 재기동한다.※인스턴스 재기동 후에는 ssh 접속 명령이 변경되므로주의하십시오.)
    $ sudo /bin/dd if=/dev/zero of=/var/swap.1 bs=1M count=1024
    $ sudo /sbin/mkswap /var/swap.1
    $ sudo /sbin/swapon /var/swap.1
    
  • Laravel 설치 명령을 다시 실행하면 성공적으로 실행할 수 있습니다.

  • 참고문헌


  • http://www.thirtyfive.info/entry/2018/07/14/aws_EC2%E3%81%A7php%E3%81%AEcomposer_update%E3%81%A7%E3%81%AE%E3%82%A8% E3%83%A9%E3%83%BC%EF%BC%9AThe_following_exception_is_caused_by_a_lack_of_memory_or_swap%2C_or_not_having_swap_configured
  • 좋은 웹페이지 즐겨찾기