fastDFS異常の処理(四)
3238 ワード
fastDFS概要(一)fastDFSサーバのインストール(二)spring boot統合fastDFSおよび入門小Demo(三)fastDFS異常の処理(四)
一、接続方式の作成による性能への影響 二、getStoreStorage fail,errno code:28
会社でコンカレントテストをしているときに遭遇した問題は、コンカレント量が10にしか達しず、設計要件(PS:要件20)を満たしていないことです(他のサービスの影響で、コンカレントは高くなく、fastDFSとは関係ありません).私のこのサービスはfastDFSからのアップロードとダウンロードだけに関連しており、処理されていないので、こんなに低い同時実行はできないはずです.その後、問題は登録サービスにあることに気づいた.
ファイルのアップロード
fastDFS接続の作成
パッケージされたプロファイル取得ツールクラス
上記のように、アップロードする際には、アップロードサービスを行うだけで使用でき、new登録サービスを毎回行う必要はありません.しかし,このサービスはもう一つのメソッドを呼び出し,反射的にコードを取得することで性能が低下する.登録方式をnewタイプに変更して登録すると,同時問題が解決される.
ファイルのアップロード
fastDFS接続の作成
エラーの原因は、trackerを構成するときに構成項目が入っていることです.
この構成項目は、storageサービスの予約ディスク領域のサイズを構成する比で、デフォルトは10%です.つまり、ディスク領域が10%未満の場合、trackerはファイルのアップロードを拒否します.
解決方法:不要なファイルを削除するには、DFSの削除API削除を呼び出すのが望ましい.DFSはインデックスファイルを維持し、API削除を呼び出すとインデックスファイルとともに削除されるからだ.この方式は慎重に使う. ファイルの削除が許可されていない場合は、ディスクを拡張する必要があります.
文書ディレクトリ
一、接続方式の作成が性能に与える影響
会社でコンカレントテストをしているときに遭遇した問題は、コンカレント量が10にしか達しず、設計要件(PS:要件20)を満たしていないことです(他のサービスの影響で、コンカレントは高くなく、fastDFSとは関係ありません).私のこのサービスはfastDFSからのアップロードとダウンロードだけに関連しており、処理されていないので、こんなに低い同時実行はできないはずです.その後、問題は登録サービスにあることに気づいた.
ファイルのアップロード
//
@Autowired
private FastDFSClient fastDFSClient;
//
String[] upload_file = fastDFSClient.uploadFile(bytes, extFilename, null);
fastDFS接続の作成
public FastDFSClient() throws Exception {
// PropertieUtil trackerServer
String trackerServer=PropertieUtil.getProperty("application.properties", "trackerServer").replace("\"", "");
// fastDFS
ClientGlobal.initByTrackers(trackerServer);
trackerClient = new TrackerClient();
trackerServer = trackerClient.getConnection();
storageServer = null;
storageClient = new StorageClient1(trackerServer, storageServer);
}
パッケージされたプロファイル取得ツールクラス
public class PropertieUtil {
public static String getProperty(String properties, String key) {
Properties pro = new Properties();
//
InputStream in = PropertieUtil.class.getClassLoader().getResourceAsStream(properties);
try {
// properties
pro.load(in);
} catch (IOException e) {
e.printStackTrace();
}
//
String property = pro.getProperty(key);
return property;
}
上記のように、アップロードする際には、アップロードサービスを行うだけで使用でき、new登録サービスを毎回行う必要はありません.しかし,このサービスはもう一つのメソッドを呼び出し,反射的にコードを取得することで性能が低下する.登録方式をnewタイプに変更して登録すると,同時問題が解決される.
ファイルのアップロード
// fastDF
@Value(value = "${tracker_server}")
private String tracker_server;
//new
FastDFSClient fast = new FastDFSClient(trackerServer);
//
String[] upload_file = fast.uploadFile(bytes, extFilename, null);
fastDFS接続の作成
public FastDFSClient(@Value(value = "${tracker_server}") String tracker_server) throws Exception {
// fastDFS
ClientGlobal.initByTrackers(tracker_server);
trackerClient = new TrackerClient();
trackerServer = trackerClient.getConnection();
storageServer = null;
storageClient = new StorageClient1(trackerServer, storageServer);
}
二、getStoreStorage fail,errno code:28
エラーの原因は、trackerを構成するときに構成項目が入っていることです.
# reserved storage space for system or other applications.
# if the free(available) space of any stoarge server in
# a group <= reserved_storage_space,
# no file can be uploaded to this group.
# bytes unit can be one of follows:
### G or g for gigabyte(GB)
### M or m for megabyte(MB)
### K or k for kilobyte(KB)
### no unit for byte(B)
### XX.XX% as ratio such as reserved_storage_space = 10%
reserved_storage_space = 10%
この構成項目は、storageサービスの予約ディスク領域のサイズを構成する比で、デフォルトは10%です.つまり、ディスク領域が10%未満の場合、trackerはファイルのアップロードを拒否します.
解決方法: