Nextcloud에서 발생하는 "PHP OPcache가 제대로 구성되지 않았습니다" 경고를 해결하는 방법

Nextcloud에서 "PHP OPcache가 제대로 구성되지 않았습니다."라는 오류 메시지가 표시될 경우 , 오래된 포럼 게시글에서 가져온 복잡한 설정 코드를 붙여넣는 것이 해결책이 될 수 없습니다. 먼저 Nextcloud가 어떤 OPcache 제한이나 설정에 대해 문제를 제기하는지 파악한 후, 웹 서버에서 실제로 사용되는 PHP 구성을 변경해야 합니다.

현재 Nextcloud 35 관리 문서에서는 OPcache를 중요한 PHP 성능 계층으로 취급합니다. Nextcloud는 관리자 패널에서 OPcache 크기 제한이 할당된 용량의 90%를 초과할 경우 관련 경고를 표시한다고 설명합니다. 또한 캐시된 코드 주석을 유지하도록 요구합니다. PHP 매뉴얼에는 관련 지시문과 기본값이 명시되어 있습니다. 이러한 사실들을 통해 OPcache를 보다 안전하게 조정할 수 있습니다. 즉, 제한된 리소스만 늘리고, 필요한 동작은 유지하며, 특별한 이유가 없는 한 업그레이드를 복잡하게 만드는 변경은 피해야 합니다.

Nextcloud 관리자 개요 화면에서 페이지 상단 부근에 PHP OPcache 구성 경고가 표시됩니다.
이 경고는 진단 단서로 간주해야 합니다. 메모리 또는 파일 개수 제한을 변경하기 전에 특정 OPcache 제약 조건을 파악하십시오.

Nextcloud OPcache 경고가 일반적으로 의미하는 바는 무엇인가요?

OPcache는 컴파일된 PHP 바이트코드를 공유 메모리에 저장하므로 PHP는 모든 요청마다 동일한 애플리케이션 파일을 구문 분석하고 컴파일할 필요가 없습니다. Nextcloud는 이를 성능 향상 기능으로 설명하며, PHP는 5.5 버전부터 Zend OPcache를 코어에 포함했습니다.

이 경고는 여러 가지 이유로 나타날 수 있습니다. 가장 일반적인 경우는 OPcache 용량이 거의 꽉 찼거나, 웹 SAPI에 대해 OPcache가 비활성화되었거나, 주석 보존과 같은 필수 동작이 변경된 경우입니다. Nextcloud의 현재 튜닝 가이드에서는 OPcache 크기 제한이 할당량의 90%를 초과할 때 크기 조정 경고가 표시된다고 명시하고 있으며, 명시적으로 .을 요구합니다 opcache.save_comments = 1.

공식 참조 자료: Nextcloud 서버 튜닝 및 OPcache 안내 , Nextcloud PHP 구성 참고 사항 , PHP OPcache 런타임 구성 .

경고 메시지를 바탕으로 해결책을 선택하고, 모든 경우에 일률적으로 적용하는 차단 방식을 택하지 마십시오.

상황첫 번째 변경이 가장 좋습니다절충
OPcache 메모리가 Nextcloud의 경고 임계값을 초과했습니다.opcache.memory_consumption적당히 증가시키세요공유 RAM 사용량은 늘어나지만 캐시 변경 빈도는 줄어듭니다.
인터넷에 저장된 문자열이 거의 가득 찼습니다.증가하다opcache.interned_strings_buffer공유 메모리를 추가로 소모합니다. 관련 없는 제한을 높여도 아무런 이점이 없습니다.
캐시된 스크립트/파일 슬롯이 거의 꽉 찼습니다.증가하다opcache.max_accelerated_files해시 테이블의 크기가 클수록 더 많은 메모리를 사용합니다.
OPcache가 비활성화되었습니다.opcache.enable=1웹 PHP 구성 설정Nextcloud에서 정상적이고 권장되는 사용 환경입니다. 올바른 SAPI를 확인하십시오.
opcache.save_comments비활성화되었습니다세트opcache.save_comments=1Nextcloud에서 이 기능을 비활성화해야 할 의미 있는 특별한 이유는 없습니다. Nextcloud는 댓글이 보존되도록 요구합니다.

PHP는 현재 `stdlib.php`의 기본값으로 `stdlib.php`를 128MB opcache.memory_consumption, `stdlib.php`를 8MB opcache.interned_strings_buffer, `stdlib.php`를 10,000MB로 설정하고 있습니다 opcache.max_accelerated_files. 이러한 기본값은 참고용일 뿐, 모든 Nextcloud 설치 환경에 적용되는 일반적인 목표치는 아닙니다. 소규모 개인 서버는 이 값에 근접해도 괜찮을 수 있지만, 여러 애플리케이션이 실행되는 대규모 설치 환경에서는 더 많은 여유 공간이 필요할 수 있습니다.

1단계: Nextcloud가 실제로 사용하는 PHP 구성을 확인합니다.

이 단계는 많은 실패한 해결 방법을 방지합니다. Nextcloud 문서에 따르면 웹 서버와 명령줄 PHP는 서로 다른 구성 파일을 로드할 수 있습니다. Debian 및 Ubuntu 계열 시스템에서 일반적인 경로는 /etc/php/<version>/fpm/php.ini, /etc/php/<version>/apache2/php.ini, 및 입니다 /etc/php/<version>/cli/php.ini.

php --iniCLI 구성을 확인하려면 해당 명령을 실행하십시오 . 하지만 이 파일이 PHP-FPM이나 Apache에서 사용하는 파일과 동일하다고 가정해서는 안 됩니다. 웹 SAPI의 경우, 임시 phpinfo()페이지는 즉시 보호하고 삭제할 수 있는 경우에만 사용하거나, PHP-FPM 풀/서비스 구성 및 배포판별 모듈 파일을 검사하십시오.

권장 사항: Nextcloud가 PHP-FPM을 사용하는 Nginx 또는 Apache 뒤에서 실행되는 경우 FPM OPcache 구성을 수정하십시오. Apache에서 mod_php를 사용하는 경우 Apache PHP 구성을 수정하십시오. 백그라운드 작업에서 동일한 동작이 필요한 경우 CLI 구성도 일관되게 유지하되, 브라우저 경고는 웹 요청 경로에 따라 생성된다는 점을 유의하십시오.

2단계: 문제를 해결하는 데 필요한 최소한의 OPcache 지시문 세트를 편집합니다.

텍스트 편집기 화면에 OPcache 구성 파일이 표시됩니다. 이 파일에는 활성화, 메모리, 인터닝된 문자열, 가속 파일 및 주석 저장 지시문이 포함되어 있습니다.
웹 SAPI에서 사용하는 OPcache 구성을 편집합니다. 크기가 제한된 리소스만 늘리고, 크기가 큰 사전 설정값을 맹목적으로 복사하지 마십시오.

일반적인 서버에 대한 보수적인 예시는 아래와 같습니다. 제시된 수치는 시작점으로만 참고하시고, 보장된 값으로 간주하지 마십시오.

[opcache]
opcache.enable=1
opcache.memory_consumption=128
opcache.interned_strings_buffer=16
opcache.max_accelerated_files=10000
opcache.save_comments=1

Nextcloud에서 OPcache 메모리가 거의 꽉 찼다는 경고가 표시될 경우, 서버에 충분한 여유 RAM이 있다면 128MB에서 256MB로 점진적으로 늘리는 것이 적절할 수 있습니다. 하지만 경고 메시지가 인터닝된 문자열이나 캐시된 스크립트를 가리키는 경우라면 메모리만 늘리기보다는 해당 제한을 높이는 것이 좋습니다. 메모리가 제한된 VPS에서 512MB로 바로 늘리면 PHP-FPM 워커, 데이터베이스, Redis 및 운영 체제에서 사용할 수 있는 RAM이 줄어들 수 있습니다.

재검증 설정은 어떻게 되나요?

Nextcloud의 최신 튜닝 가이드에 따르면 PHP는 기본적으로 캐시된 스크립트의 변경 사항을 2초마다 확인하며, 모든 사용자에게 이 기본값을 변경하도록 권장하지는 않습니다. opcache.revalidate_freq이 값을 높이면 파일 시스템 검사 횟수를 줄일 수 있지만, 그 대가로 애플리케이션 업그레이드 및 수정 사항이 config.php반영되는 데 시간이 더 오래 걸릴 수 있습니다. 타임스탬프 유효성 검사를 완전히 비활성화하는 것은 더 공격적인 방법이며, OPcache를 수동으로 삭제하거나 PHP를 재시작할 때까지 이전 코드가 계속 실행될 수 있습니다.

대부분의 관리자는 경고를 해제하는 것만으로 충분하며 배포 워크플로를 이해하지 못하는 한 평소 opcache.validate_timestamps처럼 opcache.revalidate_freq동작하도록 두는 것이 좋습니다. Nextcloud는 특히 재검증 방식이 변경된 후 캐시된 코드가 오래되어 업그레이드 후 비정상적인 동작이 발생할 수 있다고 경고합니다.

3단계: 올바른 PHP 서비스를 다시 시작합니다.

INI 파일을 변경한 후에는 Nextcloud를 제공하는 PHP 프로세스를 재시작하거나 다시 로드해야 합니다. 예를 들어 systemctl restart php8.2-fpmPHP-FPM을 사용하는 경우 또는 mod_php를 사용하는 경우 Apache를 재시작/다시 로드해야 합니다. 버전과 서비스 이름은 시스템에서 실제로 실행되는 버전으로 바꿔야 합니다.

재검증 동작을 변경한 경우 이 점이 더욱 중요해집니다. 올바른 서비스를 다시 시작하면 새로운 OPcache 구성이 로드되고 오래된 바이트코드에 대한 불확실성이 제거됩니다.

4단계: 값을 확인하고 웹 SAPI도 함께 확인합니다.

터미널 화면에 php --ini 및 php -i OPcache 명령어의 출력 결과와 활성화 상태 및 주요 구성 값이 표시됩니다.
CLI 검사는 INI 파일을 찾고 구문을 확인하는 데 유용하지만 웹 SAPI는 다른 구성을 로드할 수 있습니다.

유용한 명령줄 검사에는 다음이 포함됩니다.

php --ini
php -i | grep -i opcache

이 명령들을 통해 PHP가 지시문을 인식하는지 확인할 수 있지만, 이는 CLI 구성만을 증명하는 것입니다. Nextcloud 경고가 계속 표시되면 웹 SAPI에 로드된 구성을 CLI 결과와 비교하십시오. 이는 특히 cli, fpm, apache2INI 트리가 분리되어 있는 시스템에서 중요합니다.

5단계: 관리 > 개요 재확인

OPcache 경고 없이 정상적인 시스템 상태 표시기가 나타나는 Nextcloud 관리 개요입니다.
PHP를 다시 로드한 후 관리 > 개요를 새로 고치십시오. 웹 SAPI가 적절한 제한 및 필수 설정을 사용하면 OPcache 경고가 사라져야 합니다.

PHP 서비스를 재시작한 후 Nextcloud 관리 개요를 새로 고치십시오. 경고가 사라지면 구성이 올바른 SAPI에서 읽히고 있으며 보고된 임계값을 더 이상 초과하지 않는 것입니다.

문제가 계속된다면 임의로 값을 늘리지 마십시오. 다음 네 가지 사항을 순서대로 확인하십시오. 올바른 INI 파일을 편집했는지, 나중에 로드된 다른 INI 파일이 설정을 덮어쓰는지, 관련 PHP 서비스가 재시작되었는지, 그리고 경고에 언급된 OPcache 리소스가 값을 늘린 리소스와 다른지 확인하십시오.

OPcache에 얼마나 많은 메모리를 할당해야 할까요?

최적의 값은 하나로 정해져 있지 않습니다. 적절한 목표치는 캐시가 지속적으로 한계에 도달하지 않으면서도 스택의 나머지 부분에 자원 부족을 초래하지 않을 만큼 충분한 여유 공간을 확보하는 것입니다. 소규모 VPS의 경우, 보수적으로 시작하여 메모리 사용량을 모니터링하십시오. 애플리케이션이 많거나 PHP 코드 용량이 큰 인스턴스의 경우, 실제 OPcache 사용량이 128MB로 부족한 것으로 나타나면 256MB 이상을 할당하는 것이 타당할 수 있습니다. 대규모 서버에서는 PHP-FPM 워커 수 및 기타 공유 서비스와 함께 메모리 크기를 고려해야 합니다.

실질적인 비교는 간단합니다. OPcache 메모리를 늘리면 캐시 제거 및 재컴파일 횟수를 줄일 수 있지만, OPcache 메모리를 줄이면 동시 실행되는 PHP 워커와 데이터베이스에 더 많은 RAM을 할당할 수 있습니다. 서버에서 허용하는 최대값이 아니라 실제 사용량과 Nextcloud에서 보고하는 경고를 기준으로 선택하십시오.

경고 메시지가 계속 표시되는 일반적인 실수

  • CLI에서 PHP만 편집하는 경우: 브라우저는 여전히 PHP-FPM 또는 mod_php를 사용합니다.
  • 잘못된 제한값 설정: 메모리를 늘려도 가속 파일 테이블이 가득 찬 문제는 해결되지 않습니다.
  • 재시작을 잊어버린 경우: 실행 중인 PHP 프로세스에 이전 INI 값이 남아 있을 수 있습니다.
  • 비활성화 opcache.save_comments: Nextcloud에서는 댓글 보존이 필수입니다.
  • 오래된 튜닝 코드 조각을 복사하는 경우: 기존 가이드에서는 업그레이드 문제를 일으킬 수 있는 과도한 재검증 설정을 권장할 수 있습니다.

서버 유형별 권장 접근 방식

소규모 개인용 Nextcloud 서버: 재검증 기본 설정을 유지하고, 댓글을 보존하며, 임계값을 실제로 초과하는 경우에만 제한값을 늘립니다. 이렇게 하면 RAM 사용량을 최소화하고 운영상의 예상치 못한 문제를 방지할 수 있습니다.

사용량이 많은 다중 사용자 서버: OPcache 사용량을 모니터링하고 관리자 경고가 발생하여 부하가 증가하는 경우 여유 공간을 확보하십시오. OPcache 메모리 사용량을 PHP-FPM 워커 크기 조정과 연동하여 최적화로 인해 시스템 전체에 스와핑이 발생하지 않도록 하십시오.

관리형 호스팅 또는 컨테이너 이미지: 먼저 PHP 설정을 재정의할 위치를 파악하십시오. 임시 컨테이너 내부의 파일을 편집하면 재배포 후 설정이 사라질 수 있지만, 호스팅 제공업체는 제어판이나 환경 설정을 통해 사용자 지정 INI 값을 제공할 수 있습니다.

최종 확인

올바른 해결 방법은 세 가지입니다. opcache.save_comments=1첫째, Nextcloud의 웹 PHP 프로세스에서 OPcache가 활성화되어 있어야 하고, 둘째, 필수 동작이 그대로 유지되어야 하며, 셋째, 용량이 거의 꽉 찼던 특정 OPcache 리소스에 충분한 여유 공간이 확보되어야 합니다. 이러한 조건이 충족되고 PHP가 다시 로드되면 과도한 메모리 할당이나 위험한 캐시 유효성 검사 변경 없이 경고가 사라져야 합니다.

댓글 남기기

SSL 갱신 후 Zimbra 관리 콘솔에서 발생하는 404 오류(찾을 수 없음) 해결 방법

SSL 갱신 후 Zimbra 관리 콘솔에서 발생하는 404 오류(찾을 수 없음) 해결 방법

SSL 갱신 후 Zimbra 관리 콘솔에서 발생하는 404 오류를 해결하려면 올바른 URL 및 포트, 프록시 라우팅, 서비스 상태, 배포된 인증서 및 로그를 확인하십시오.

Nextcloud에서 발생하는 "PHP OPcache가 제대로 구성되지 않았습니다" 경고를 해결하는 방법

Nextcloud에서 발생하는 "PHP OPcache가 제대로 구성되지 않았습니다" 경고를 해결하는 방법

Nextcloud의 PHP OPcache 구성 경고를 진단하고 해결하는 방법을 알아보세요. 활성화된 PHP SAPI, 크기 제한, 주석 및 재검증 설정을 확인하면 됩니다.

MySQL 버전 업그레이드 후 Kopano 데이터베이스 마이그레이션 오류 해결 방법

MySQL 버전 업그레이드 후 Kopano 데이터베이스 마이그레이션 오류 해결 방법

MySQL 또는 MariaDB 업그레이드 후 Kopano 데이터베이스 마이그레이션 실패 문제를 해결하려면 백업, 서버 버전, SQL 모드, 문자 집합, 스키마 상태 및 로그를 확인하십시오.

Nextcloud에서 LDAP 및 Active Directory 인증을 구성하는 방법

Nextcloud에서 LDAP 및 Active Directory 인증을 구성하는 방법

안전한 전송, 사용자 및 그룹 필터, 로그인 속성, 그리고 검증된 배포 기능을 통해 Nextcloud를 LDAP 또는 Active Directory에 연결하세요.

Google 서비스 없이 Element Android 알림 설정하기: UnifiedPush 가이드

Google 서비스 없이 Element Android 알림 설정하기: UnifiedPush 가이드

UnifiedPush, Android 권한, 배터리 설정 및 안정성 검증 테스트를 구성하여 Google 서비스가 제거된 휴대폰에서 Element Android 알림 문제를 해결하세요.

Nextcloud의 "데이터베이스에 일부 인덱스가 누락되었습니다" 경고를 해결하는 방법

Nextcloud의 "데이터베이스에 일부 인덱스가 누락되었습니다" 경고를 해결하는 방법

Nextcloud의 데이터베이스 인덱스 누락 경고를 공식 occ 명령어를 사용하여 해결하세요. 먼저 백업을 수행하고, 변경 사항을 미리 보고, 복구를 실행한 후 결과를 확인하십시오.

Element Web에서 Keycloak을 사용하여 싱글 사인온(SSO)을 구성하는 방법

Element Web에서 Keycloak을 사용하여 싱글 사인온(SSO)을 구성하는 방법

OIDC를 Synapse에 연결하고, 정확한 콜백 URL을 설정하고, 사용자 클레임을 매핑하고, 로그아웃을 테스트하여 Element Web용 Keycloak SSO를 구성하십시오.

Zimbra "LDAP 서버 응답 없음" 부팅 실패 해결: 실용적인 복구 가이드

Zimbra "LDAP 서버 응답 없음" 부팅 실패 해결: 실용적인 복구 가이드

응답하지 않는 LDAP 서버로 인해 발생하는 Zimbra 시작 오류를 진단하고 해결하는 방법을 알아보세요. 여기에는 서비스 점검, DNS, 포트, 인증서, LDAP URL 및 복구 유효성 검사가 포함됩니다.

ownCloud Infinite Scale을 위한 S3 객체 스토리지 구성 방법

ownCloud Infinite Scale을 위한 S3 객체 스토리지 구성 방법

s3ng 드라이버, POSIX 메타데이터, 버킷 정책, 유효성 검사 및 안전한 프로덕션 환경 점검을 사용하여 ownCloud Infinite Scale용 S3 호환 객체 스토리지를 구성합니다.

Zimbra 메일 큐 적체 문제 해결: Postfix 안전하게 플러시 및 배달 확인

Zimbra 메일 큐 적체 문제 해결: Postfix 안전하게 플러시 및 배달 확인

Zimbra Postfix 백로그를 검사하고, 지연된 메일과 보류된 메일을 구분하고, 안전하게 큐를 비우고, 메시지를 삭제하지 않고 진행 상황을 확인하는 방법을 알아보세요.