2016-10-13 1 views
0

InfluxDB에 Java를 사용하여 쓰고 있는데 아래에 표시된 것처럼 무한 루프를 사용하여 DB에 포인트를 쓰는 것입니다.InfluxDB 쓰기 작업이 24 시간/하루 후에 자동으로 작동하지 않습니다.

while (true) { 

    for (int i = 0; i < 100000; i++) { 

    list.add("cpu,atag=test" + i + " idle=100,usertime=10,system=1"); 

    } 

      influxDB.write(dbName, "autogen", InfluxDB.ConsistencyLevel.ALL, list); 
      list.clear(); 
      logger.info("WritePoints for " + 1 + " writes of " + 100000 + " Points took:" + watch); 
    } 

내가 확인하고 디스크 압축 및 디스크 쓰기 속도는 어떻게하고 있는지 볼 시간의 긴 기간 동안이 프로그램을 계속 실행하지만, 24 시간 1 일 이후에 난 예외 "시간을"무엇입니까 후 아래 그림과 같이 .

며칠 동안 동일한 프로그램을 계속 실행하는 방법은 무엇입니까? 나는 예외를 잡아서 연결을 다시 만들 수 있지만 그것을하는 다른 방법이 있습니까?

Exception in thread "main" java.lang.reflect.InvocationTargetException 
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57) 
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) 
    at java.lang.reflect.Method.invoke(Method.java:606) 
    at org.eclipse.jdt.internal.jarinjarloader.JarRsrcLoader.main(JarRsrcLoader.java:58) 
Caused by: retrofit.RetrofitError: timeout 
    at retrofit.RetrofitError.networkError(RetrofitError.java:27) 
    at retrofit.RestAdapter$RestHandler.invokeRequest(RestAdapter.java:395) 
    at retrofit.RestAdapter$RestHandler.invoke(RestAdapter.java:240) 
    at org.influxdb.impl.$Proxy0.writePoints(Unknown Source) 
    at org.influxdb.impl.InfluxDBImpl.write(InfluxDBImpl.java:159) 
    at org.influxdb.impl.InfluxDBImpl.write(InfluxDBImpl.java:171) 
    at net.company.influx.InfluxDBBatchWriter.doParse(InfluxDBBatchWriter.java:61) 
    at net.company.influx.InfluxDBBatchWriter.main(InfluxDBBatchWriter.java:25) 
    ... 5 more 
Caused by: java.net.SocketTimeoutException: timeout 
    at okio.Okio$3.newTimeoutException(Okio.java:207) 
    at okio.AsyncTimeout.exit(AsyncTimeout.java:261) 
    at okio.AsyncTimeout$2.read(AsyncTimeout.java:215) 
    at okio.RealBufferedSource.indexOf(RealBufferedSource.java:306) 
    at okio.RealBufferedSource.indexOf(RealBufferedSource.java:300) 
    at okio.RealBufferedSource.readUtf8LineStrict(RealBufferedSource.java:196) 
    at com.squareup.okhttp.internal.http.Http1xStream.readResponse(Http1xStream.java:186) 
    at com.squareup.okhttp.internal.http.Http1xStream.readResponseHeaders(Http1xStream.java:127) 
    at com.squareup.okhttp.internal.http.HttpEngine.readNetworkResponse(HttpEngine.java:737) 
    at com.squareup.okhttp.internal.http.HttpEngine.access$200(HttpEngine.java:87) 
    at com.squareup.okhttp.internal.http.HttpEngine$NetworkInterceptorChain.proceed(HttpEngine.java:722) 
    at com.squareup.okhttp.internal.http.HttpEngine.readResponse(HttpEngine.java:576) 
    at com.squareup.okhttp.Call.getResponse(Call.java:287) 
    at com.squareup.okhttp.Call$ApplicationInterceptorChain.proceed(Call.java:243) 
    at com.squareup.okhttp.Call.getResponseWithInterceptorChain(Call.java:205) 
    at com.squareup.okhttp.Call.execute(Call.java:80) 
    at retrofit.client.OkClient.execute(OkClient.java:53) 
    at retrofit.RestAdapter$RestHandler.invokeRequest(RestAdapter.java:326) 
    ... 11 more 
Caused by: java.net.SocketException: Socket closed 
    at java.net.SocketInputStream.read(SocketInputStream.java:190) 
    at java.net.SocketInputStream.read(SocketInputStream.java:122) 
    at okio.Okio$2.read(Okio.java:139) 
    at okio.AsyncTimeout$2.read(AsyncTimeout.java:211) 
    ... 26 more 
+0

어떤 InfluxDB 버전을 사용하고 있습니까? –

+0

버전은 v1.0.2입니다. – Ammad

+0

100k 포인트의 일괄 처리를 작성하는 것처럼 보입니다. 분명히 차선책입니다. 배치 크기를 5-10k로 낮추고 문제가 지속되는지 확인하십시오. –

답변

1

InfluxDB는 매우 큰 일괄 처리 크기로 하위 최적으로 수행합니다. 테스트를 다음과 같이 수정 해보십시오.

int n = 0; 
int numSeries = 100000; 
int batchSize = 5000; 

while (true) { 

    for (int i = 0; i < batchSize; i++) { 
    n = (n + 1) % numSeries 
    list.add("cpu,atag=test" + n + " idle=100,usertime=10,system=1"); 
    } 

    influxDB.write(dbName, "autogen", InfluxDB.ConsistencyLevel.ALL, list); 
    list.clear(); 
    logger.info("WritePoints for " + 1 + " writes of " + 5000 + " Points took:" + watch); 
}