파일에 액세스하려고 하면 프로세스가 중단됩니다.

파일에 액세스하려고 하면 프로세스가 중단됩니다.

저는 ext4 파일 시스템으로 Ubuntu 16.04.5를 실행하고 있는데, 파일을 읽는 동안 프로세스가 중단되는 파일이 있습니다.

예를 들어:

$ cat /path/to/file.txt

그런 다음 별도의 터미널에서:

$ sudo cat /proc/24147/stack
[<ffffffff811937dd>] wait_on_page_bit_killable+0xcd/0xf0
[<ffffffff81193c86>] generic_file_read_iter+0x486/0x6b0
[<ffffffff8121395e>] new_sync_read+0x9e/0xe0
[<ffffffff812139c9>] __vfs_read+0x29/0x40
[<ffffffff81213f96>] vfs_read+0x86/0x130
[<ffffffff81214ce5>] SyS_read+0x55/0xc0
[<ffffffff81829d4e>] entry_SYSCALL_64_fastpath+0x22/0xc1
[<ffffffffffffffff>] 0xffffffffffffffff

이 파일을 읽는 동안 많은 프로세스가 중단되었습니다. 다음은 다른 호출 스택을 사용한 또 다른 예입니다.

$ less /path/to/file.txt

그런 다음 별도의 터미널에서:

$ sudo cat /proc/23006/stack
[<ffffffff8140f954>] call_rwsem_down_read_failed+0x14/0x30
[<ffffffff812a1e83>] ext4_map_blocks+0x443/0x5a0
[<ffffffff812edb98>] ext4_mpage_readpages+0x368/0x920
[<ffffffff8129f626>] ext4_readpages+0x36/0x40
[<ffffffff811a0b89>] __do_page_cache_readahead+0x199/0x240
[<ffffffff811a0d6d>] ondemand_readahead+0x13d/0x250
[<ffffffff811a101e>] page_cache_sync_readahead+0x2e/0x50
[<ffffffff81193d4a>] generic_file_read_iter+0x54a/0x6b0
[<ffffffff8121395e>] new_sync_read+0x9e/0xe0
[<ffffffff812139c9>] __vfs_read+0x29/0x40
[<ffffffff81213f96>] vfs_read+0x86/0x130
[<ffffffff81214ce5>] SyS_read+0x55/0xc0
[<ffffffff81829d4e>] entry_SYSCALL_64_fastpath+0x22/0xc1
[<ffffffffffffffff>] 0xffffffffffffffff

실제 문제의 범위를 조금 좁힐 필요가 있습니다. 컨텍스트가 약간 복잡합니다(Apache를 실행하고 mod_wsgi를 사용하고 있으며 Python 코드는 로그 파일인 파일에 기록하고 볼륨은 AWS 인스턴스의 인스턴스 스토리지 위에 있는 RAID 어레이입니다.) .

cat위에서 설명한 것처럼 Linux 상자를 "파일 사용"으로 인해 터미널이 정지되는 상태로 만드는 것이 가능합니까 ? 거기에서 여기에 유용한 추가 컨텍스트가 무엇인지 결정할 수 있습니다.

일부 생산 시스템에서는 이러한 일이 한 달에 한 번 정도 발생한다는 점을 언급하고 싶습니다(과도한 사용량). 복구를 위해 머신을 재부팅할 수 있지만 어떤 상태인지 알고 싶습니다. 이상적으로는 이런 일이 처음부터 발생하지 않도록 하고 싶습니다.

관련 정보