3

私はApacheを搭載したサーバーを持っています。

1 つのファイルに対する同時読み取り/書き込み操作に問題があります。

index.htmlApache DocRootにファイルがあるとします。ブラウザで開いて読むことができます。

Eclipse IDE を使用して、SSH (または FTP) 経由でサーバー上のファイルを直接変更しています。ファイルにいくつかの変更を加えた後、サーバーにアップロードしています。アップロードには時間がかかります。

問題は、ファイルのアップロード中にブラウザでファイルを表示しようとすると、アップロードがハングし、ターゲット ファイルが空白になることです。Apache と SSH サーバーの両方がファイルにアクセスしようとしていて、SSH が書き込み、Apache が読み取りを試みているようです。衝突はすべてを壊します。

これを回避する方法はありますか?おそらく、SSHサーバーの構成オプションまたはApacheモジュールですか?

4

1 に答える 1

2

最初にファイルをロックする必要があります。使用しているオペレーティング システムと apache 構成を知っていますか?それは自分のシステムですか?

以下は、Apache サーバーのドキュメントからの引用です。

EnableMMAP ディレクティブ


説明:
配信中にメモリ マッピングを使用してファイルを読み取る

構文:
EnableMMAP オン|オフ

デフォルト:
EnableMMAP オン

環境:
サーバー構成、仮想ホスト、ディレクトリ、.htaccess

オーバーライド:
ファイル情報

状態:
芯

モジュール:
芯

このディレクティブは、配信中にファイルの内容を読み取る必要がある場合に、httpd がメモリ マッピングを使用できるかどうかを制御します。デフォルトでは、リクエストの処理でファイル内のデータにアクセスする必要がある場合 (たとえば、mod_include を使用してサーバーで解析されたファイルを配信する場合)、OS がサポートしている場合、Apache httpd はファイルをメモリ マップします。

このメモリ マッピングにより、パフォーマンスが向上する場合があります。ただし、一部の環境では、操作上の問題を防ぐためにメモリ マッピングを無効にすることをお勧めします。
•一部のマルチプロセッサ システムでは、メモリ マッピングによって httpd のパフォーマンスが低下する場合があります。
• httpd がメモリにマップされている間にファイルを削除または切り詰めると、セグメンテーション違反で httpd がクラッシュする可能性があります。

これらの問題に対して脆弱なサーバー構成では、次のように指定して、配信されたファイルのメモリ マッピングを無効にする必要があります。
EnableMMAP オフ

NFS マウントされたファイルの場合、次のように指定して、問題のあるファイルに対してこの機能を明示的に無効にすることができます。

  EnableMMAP オフ

サーバーがクラッシュしているため、ファイルがあるディレクトリにこのオプションを「設定」していると思われます。

追加

AllowMMAP オフ

ディレクトリの .htaccess ファイルに。

于 2013-08-20T01:45:02.000 に答える