Java 如何使用RestCypherEngine查询设置读取超时

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

我一直在试图找出在java应用程序中使用RESTCYpheringine进行查询时如何防止读取套接字超时。这是课堂

@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