Adobe Commerce에 대한 /tmp 마운트 가득 참 문제 해결
이 문서에서는 /tmp
마운트가 꽉 찼거나 사이트가 다운되었을 수 있으며 노드에 SSH를 사용할 수 없는 경우 해결 방법을 제공합니다.
영향을 받는 제품 및 버전
- Adobe Commerce 2.3.0 - 2.3.6-p1, 2.4.0 - 2.4.2
문제
/tmp
마운트가 꽉 차면 다음 오류를 비롯하여 다양한 증상이 나타날 수 있습니다.
- SQLSTATE[HY000]: 일반 오류: 파일을 쓰는 동안 오류 발생
- 오류 코드: 28
- 장치(28)에 남은 공간이 없습니다
- 오류 session_start(): 실패: 장치에 남아 있는 공간이 없습니다
- 오류 1(HY000): '/tmp/ 파일을 만들거나 쓸 수 없습니다.
- SQL 오류: 3, SQLState: HY000
- 일반 오류: 1021 디스크가 꽉 찼습니다(https://experienceleague.adobe.com/tmp?lang=ko)
- SSH를 통해 노드에 액세스할 수 없음:
bash: here-document에 대한 임시 파일을 만들 수 없음: 장치에 남아 있는 공간이 없음 - 오류 번호: 28 "장치에 남은 공간이 없습니다."
- mysqld: '/tmp' 을(를) 쓰는 동안 디스크가 꽉 찼습니다.
- [오류] mysqld: 디스크가 꽉 찼습니다(https://experienceleague.adobe.com/tmp?lang=ko)
- SQLSTATE[HY000]: 일반 오류: 1에서 '/tmp/' 파일을 만들거나 쓸 수 없습니다.
- SQLSTATE[HY000]: 일반 오류: '/tmp/' 파일을 열 때 23 리소스가 부족합니다.
- 오류 코드: 24 "열려 있는 파일이 너무 많습니다"
- 오류: 23: 파일을 열 때 리소스가 부족합니다
재현 단계:
/tmp
마운트가 얼마나 찼는지 확인하려면 CLI에서 /tmp
(으)로 전환하고 다음 명령을 실행하십시오.
df -h
예상 결과:
80% 미만.
실제 결과:
약 100%.
원인
/tmp
마운트에 파일이 너무 많습니다. 원인은 다음과 같습니다.
- 대형 및/또는 너무 많은 임시 테이블을 생성하는 잘못된 SQL 쿼리입니다.
- 서비스가
/tmp
디렉터리에 쓰는 중입니다. /tmp
디렉터리에 데이터베이스 백업/덤프가 남아 있습니다.
솔루션
한 번에 공간을 확보하기 위해 수행할 수 있는 작업이 있으며, \tmp
이(가) 꽉 차지 않도록 하는 모범 사례가 있습니다.
inodes 확인 및 해제
사용 가능한 인사이트가 충분한지 확인합니다. 이렇게 하려면 다음 명령을 실행합니다.
df -i
출력은 다음과 비슷합니다.
Filesystem Inodes Used Free Use% Mounted on
/dev/nvme2n1 655360 1695 653665 1% /data/mysql
Use%가 70% 미만인지 확인합니다. Inode는 파일과 관련이 있습니다. 파티션에서 파일을 제거하면 inodes를 사용할 수 있습니다.
저장소 공간 확인 및 사용 가능
/tmp
에 파일을 저장하는 서비스가 여러 개 있습니다.
MySQL 공간 확인 및 사용 가능
MySQL 디스크 공간이 클라우드 인프라의 Adobe Commerce에 부족함 > 지원 기술 자료에서 저장소 공간 확인 및 사용 중지의 지침을 따르십시오.
Elasticsearch 덤프 확인
시스템 셸을 사용하여 헤더(*.hprof
)를 제거합니다.
find /tmp/*.hprof -type f -delete
다른 사용자가 만든 파일을 삭제할 권한이 없지만(이 경우, Elasticsearch) 파일이 큰 경우 지원 티켓을 만들기하여 처리하십시오.
데이터베이스 덤프/백업 확인
/tmp
에서 .sql
또는 .sql.gz
파일을 확인하고 정리하십시오. 이러한 데이터는 백업 중에 또는 mysqldump
도구를 사용하여 데이터베이스 덤프를 수동으로 만들 때 ece-tools에 의해 만들어졌을 수 있습니다.
우수 사례
/tmp
이(가) 가득 찬 문제가 발생하지 않도록 하려면 다음 권장 사항을 따르십시오.
-
검색에 MySQL을 사용하지 마십시오. Elasticsearch을 사용하면 대부분의 무거운 임시 테이블을 만들 필요가 없습니다. 개발자 설명서에서 Elasticsearch을 사용하도록 Adobe Commerce 구성을 참조하십시오.
-
인덱스가 없는 열에서
SELECT
쿼리를 실행하지 마십시오. 이렇게 하면 많은 양의 임시 디스크 공간이 사용되기 때문입니다. 색인을 추가할 수도 있습니다. -
CLI에서 다음 명령을 실행하여
/tmp
을(를) 정리할 cron을 만드십시오.code language-bash sudo find /tmp -type f -atime +10 -delete
관련 읽기
지원 기술 자료의 클라우드 인프라의 Adobe Commerce에서 MySQL 디스크 공간이 부족합니다.