3

私はメモリに制約のある環境で作業しており、tarfile ライブラリ ( http://docs.python.org/2/library/tarfile.html ) を含む Python スクリプトを使用して、ログ ファイルのバックアップを継続的に作成しています。

ログ ファイルの数が増加するにつれて (~74 000)、システムがこのバックアップ プロセスを実行すると効果的に強制終了することに気付きました。非常に多くのメモリを消費していることに気付きました (OS によって強制終了される前に最大 192 MB)。

ログ ファイルの gzip tar アーカイブ ($ tar -czf) を、問題や高いメモリ使用量なしで作成できます。

コード:

import tarfile
t = tarfile.open('asdf.tar.gz', 'w:gz')
t.add('asdf')
t.close()

dir "asdf" は、長さ 73 のファイル名を持つ 74407 個のファイルで構成されています。膨大な量のファイルがある場合、Python の tarfile を使用することはお勧めできませんか?

Ubuntu 12.04.3 LTS と Python 2.7.3 を実行しています (tarfile のバージョンは "$Revision: 85213 $" のようです)。

4

2 に答える 2

0

解決する 2 つの方法: VM に swap add がない場合は、試してみてください。一貫して失敗していた大きなバンドルにtarされる13GBのファイルがあります。OSが殺されました。4GBスワップを追加すると役立ちました。

k8-pod または docker コンテナーを使用している場合、1 つの簡単な回避策として、 host に swap を追加します。capability:sys-admin または特権モードでは、ホスト スワップが使用されます。

メモリを回避するためにストリームを含む tarfile が必要な場合 - チェックアウト: https://gist.github.com/leth/6adb9d30f2fdcb8802532a87dfbeff77

于 2020-11-18T14:32:03.957 に答える