Java 如何使用RestCypherEngine查询设置读取超时
我一直在试图找出在java应用程序中使用RESTCYpheringine进行查询时如何防止读取套接字超时。这是课堂Java 如何使用RestCypherEngine查询设置读取超时,java,neo4j,cypher,Java,Neo4j,Cypher,我一直在试图找出在java应用程序中使用RESTCYpheringine进行查询时如何防止读取套接字超时。这是课堂 @Service public class UserServiceImpl implements UserService { @Autowired ThreadPoolTaskExecutor taskExecutor; @Autowired RestAPIFacade gd; @Autowired RestCypherQueryEngine engine; @Overri
@Service
public class UserServiceImpl implements UserService {
@Autowired
ThreadPoolTaskExecutor taskExecutor;
@Autowired
RestAPIFacade gd;
@Autowired
RestCypherQueryEngine engine;
@Override
public void addActivityObjectToGraph(List<Activity> activities) {
taskExecutor.execute(new ProcessActivity(activities));
}
//Runnable to process the activities as they come in..
class ProcessActivity implements Runnable {
private List<Activity> activities;
public ProcessActivity() {
}
public ProcessActivity(List<Activity> activities) {
this.activities = activities;
}
@Override
public void run() {
Map<String, Object> params = new HashMap<>();
log.info("Processing Activity Collection of size: " + activities.size());
for (Activity activity : activities) {
Map<String, Object> props = new HashMap<>();
props.put("activityid", activity.getActivityID());
props.put("objecttype", activity.getTargetObjectType());
props.put("objectid", activity.getTargetObjectID());
props.put("containertype", activity.getContainerObjectType());
props.put("containerid", activity.getContainerObjectID());
props.put("activitytype", activity.getType());
props.put("userid", activity.getUserID());
props.put("creationdate", activity.getCreationDate());
try (Transaction tx = gd.beginTx()) {
params.put("props", props);
params.put("userid", activity.getUserID());
engine.query("match (p:Person{userid:{userid}}) create unique (p)-[:created]->(a:Activity{props})", params);
params.clear();
tx.success();
} catch (RestResultException rre) {
log.info(rre.getLocalizedMessage());
} catch (CypherExecutionException cee) {
log.info(cee.getLocalizedMessage());
}catch(Exception e) {
log.info(e.getLocalizedMessage());
}
}
}
}
}
我在几篇文章中读到,可以通过将org.neo4j.rest.read_timeout属性设置为100秒来解决这个问题,但我不知道应该如何设置这个值。我在application.properties文件中添加了该设置(顺便说一句,我正在运行一个Spring Boot gradle应用程序),但这似乎没有效果
我正在Centos 6服务器上运行一个Neo4j社区服务器(v2.1.2),该服务器具有30GB RAM,我认为即使对于生产级系统来说也应该足够了。我需要做什么来消除这些错误
谢谢。您为neo4j分配了多少内存?在不调优垃圾收集的情况下向java应用程序添加太多内存可能是有害的,并准确地显示您正在经历的行为(服务器暂停执行GC)。我为Neo4J进程分配了最大24GB的内存。那是不是太多了。我一直在寻找有关服务器调优的文档,但在这方面并没有得到多少东西。
2014-06-20 09:33:24.070 INFO 12902 [taskExecutor-15] --- c.y.n.services.impl.UserServiceImpl : java.net.SocketTimeoutException: Read timed out
2014-06-20 09:33:24.446 INFO 12902 [taskExecutor-94] --- c.y.n.services.impl.UserServiceImpl : java.net.SocketTimeoutException: Read timed out
2014-06-20 09:33:24.501 INFO 12902 [taskExecutor-46] --- c.y.n.services.impl.UserServiceImpl : java.net.SocketTimeoutException: connect timed out
2014-06-20 09:33:24.512 INFO 12902 [taskExecutor-47] --- c.y.n.services.impl.UserServiceImpl : java.net.SocketTimeoutException: connect timed out