首页 \ 问答 \ Neo4j JDBCCypherExecutor阻止线程(Neo4j JDBCCypherExecutor blocks thread)

Neo4j JDBCCypherExecutor阻止线程(Neo4j JDBCCypherExecutor blocks thread)

我正在使用neo4j 2.1.5并使用JDBCCypherExecutor发布我的密码查询。 通常,密码执行程序线程会卡住,使得应用程序在某段时间后无法使用。 一段时间后唯一的选择是重启spark webapp。

有谁遇到过这个问题?

其中一个被阻塞的线程的jstack是

"qtp1639509299-63" prio=10 tid=0x00007fe454001000 nid=0x1e0e waiting on condition [0x00007fe564fea000]
   java.lang.Thread.State: WAITING (parking)
    at sun.misc.Unsafe.park(Native Method)
    - parking to wait for  <0x0000000586cf6e88> (a java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject)
    at java.util.concurrent.locks.LockSupport.park(LockSupport.java:186)
    at java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await(AbstractQueuedSynchronizer.java:2043)
    at org.apache.http.impl.conn.tsccm.WaitingThread.await(WaitingThread.java:158)
    at org.apache.http.impl.conn.tsccm.ConnPoolByRoute.getEntryBlocking(ConnPoolByRoute.java:403)
    at org.apache.http.impl.conn.tsccm.ConnPoolByRoute$1.getPoolEntry(ConnPoolByRoute.java:300)
    at org.apache.http.impl.conn.tsccm.ThreadSafeClientConnManager$1.getConnection(ThreadSafeClientConnManager.java:224)
    at org.apache.http.impl.client.DefaultRequestDirector.execute(DefaultRequestDirector.java:391)
    at org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:820)
    at org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:754)
    at org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:732)
    at org.restlet.ext.httpclient.internal.HttpMethodCall.sendRequest(HttpMethodCall.java:336)
    at org.restlet.engine.adapter.ClientAdapter.commit(ClientAdapter.java:114)
    at org.restlet.engine.adapter.HttpClientHelper.handle(HttpClientHelper.java:112)
    at org.restlet.Client.handle(Client.java:180)
    at org.restlet.routing.Filter.doHandle(Filter.java:159)
    at org.restlet.routing.Filter.handle(Filter.java:206)
    at org.restlet.resource.ClientResource.handle(ClientResource.java:1136)
    at org.restlet.resource.ClientResource.handleOutbound(ClientResource.java:1225)
    at org.restlet.resource.ClientResource.handle(ClientResource.java:1068)
    at org.restlet.resource.ClientResource.handle(ClientResource.java:1044)
    at org.restlet.resource.ClientResource.post(ClientResource.java:1453)
    at org.neo4j.jdbc.internal.rest.TransactionalQueryExecutor.post(TransactionalQueryExecutor.java:98)
    at org.neo4j.jdbc.internal.rest.TransactionalQueryExecutor.commit(TransactionalQueryExecutor.java:133)
    at org.neo4j.jdbc.internal.rest.TransactionalQueryExecutor.executeQueries(TransactionalQueryExecutor.java:204)
    at org.neo4j.jdbc.internal.rest.TransactionalQueryExecutor.executeQuery(TransactionalQueryExecutor.java:214)
    at org.neo4j.jdbc.internal.Neo4jConnection.executeQuery(Neo4jConnection.java:370)
    at org.neo4j.jdbc.internal.Neo4jPreparedStatement.executeQuery(Neo4jPreparedStatement.java:48)
    at com.zahoor.graph.executor.JdbcCypherExecutor.query(JdbcCypherExecutor.java:28)

I am using neo4j 2.1.5 and using JDBCCypherExecutor to post my cypher queries. often the cypher executor thread gets stuck making the app unusable after sometime. The only option after sometime is to restart the spark webapp.

Has anyone encountered this problem?

The jstack of one of the blocked thread is

"qtp1639509299-63" prio=10 tid=0x00007fe454001000 nid=0x1e0e waiting on condition [0x00007fe564fea000]
   java.lang.Thread.State: WAITING (parking)
    at sun.misc.Unsafe.park(Native Method)
    - parking to wait for  <0x0000000586cf6e88> (a java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject)
    at java.util.concurrent.locks.LockSupport.park(LockSupport.java:186)
    at java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await(AbstractQueuedSynchronizer.java:2043)
    at org.apache.http.impl.conn.tsccm.WaitingThread.await(WaitingThread.java:158)
    at org.apache.http.impl.conn.tsccm.ConnPoolByRoute.getEntryBlocking(ConnPoolByRoute.java:403)
    at org.apache.http.impl.conn.tsccm.ConnPoolByRoute$1.getPoolEntry(ConnPoolByRoute.java:300)
    at org.apache.http.impl.conn.tsccm.ThreadSafeClientConnManager$1.getConnection(ThreadSafeClientConnManager.java:224)
    at org.apache.http.impl.client.DefaultRequestDirector.execute(DefaultRequestDirector.java:391)
    at org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:820)
    at org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:754)
    at org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:732)
    at org.restlet.ext.httpclient.internal.HttpMethodCall.sendRequest(HttpMethodCall.java:336)
    at org.restlet.engine.adapter.ClientAdapter.commit(ClientAdapter.java:114)
    at org.restlet.engine.adapter.HttpClientHelper.handle(HttpClientHelper.java:112)
    at org.restlet.Client.handle(Client.java:180)
    at org.restlet.routing.Filter.doHandle(Filter.java:159)
    at org.restlet.routing.Filter.handle(Filter.java:206)
    at org.restlet.resource.ClientResource.handle(ClientResource.java:1136)
    at org.restlet.resource.ClientResource.handleOutbound(ClientResource.java:1225)
    at org.restlet.resource.ClientResource.handle(ClientResource.java:1068)
    at org.restlet.resource.ClientResource.handle(ClientResource.java:1044)
    at org.restlet.resource.ClientResource.post(ClientResource.java:1453)
    at org.neo4j.jdbc.internal.rest.TransactionalQueryExecutor.post(TransactionalQueryExecutor.java:98)
    at org.neo4j.jdbc.internal.rest.TransactionalQueryExecutor.commit(TransactionalQueryExecutor.java:133)
    at org.neo4j.jdbc.internal.rest.TransactionalQueryExecutor.executeQueries(TransactionalQueryExecutor.java:204)
    at org.neo4j.jdbc.internal.rest.TransactionalQueryExecutor.executeQuery(TransactionalQueryExecutor.java:214)
    at org.neo4j.jdbc.internal.Neo4jConnection.executeQuery(Neo4jConnection.java:370)
    at org.neo4j.jdbc.internal.Neo4jPreparedStatement.executeQuery(Neo4jPreparedStatement.java:48)
    at com.zahoor.graph.executor.JdbcCypherExecutor.query(JdbcCypherExecutor.java:28)

原文:https://stackoverflow.com/questions/27043632
更新时间:2024-02-28 16:02

最满意答案

不知道你是否知道这一点,但这是我调试在控制器模式下运行的TruClient(和所有)脚本的地方。

1)转到“运行”选项卡
2)双击要查看的用户组。
3)右键单击要查看的用户(某些可能正在运行或失败)
4)选择“显示用户日志”

这将显示脚本的控制台输出,因此将显示步骤开始或结束,以及任何具有脚本的LR.log语句。
您可以在运行时设置中启用错误获取屏幕截图(我认为默认情况下可以启用),但我没有任何运气可以获得每个步骤的屏幕截图。
如果重新启动用户,则会覆盖您的日志。


Not sure if you know about this, but this is where I debug TruClient (and all) scripts which are running in Controller mode.

1) Goto the "Run" tab
2) Double click on the group of the user you want to look at.
3) Right click on the user you want to look at (some could be running or failed)
4) Select "Show User Log"

This will show the console output of the script so will show you then a step starts or finishes, and any LR.log statements you have scripts.
You can enable get screenshots on error (I think it may be enabled by default) in the run-time settings, but I haven't had any luck with the option in there to get a screenshot of every step.
If you restart a user then your logs will be overwritten.

相关问答

更多
  • 要看你压力测试的目的是什么了。。 单纯的压服务器的某个功能,这些图片资源什么的都可以删除的。 但是如果要模拟真实,就不能删除。。虽然获取图片对服务器的压力不大,但是会占用很多的网络资源。。如果删除了,就不够真实。 希望能帮到你
  • 陈霖老师有本书《LRADRUNNER11进阶指南》不错,可以看看。。结果分析是要靠一定实践的积累的,光看书肯定还不够。
  • 考虑使用SiteScope,自从LoadRunner 8.0版以来,它一直是收集UNIX | Linux状态的首选监视基础。 自版本8以来的每个Loadrunner许可证都带有500 Point SiteScope许可证,用于此目的。 可根据要求提供更多积分以供测试专用。 Consider using SiteScope, which has been the preferred monitoring foundation for the collection of UNIX|Linux status si ...
  • 对不起,这花了一段时间,我已经想到了这一点。 在事务之前创建“评估JavaScript”部分并获得代码: 'LR.startTransaction(whateverYourVariableIs);' [Steps of the script here..] 'LR.endTransaction(whateverYourVariableIs,"Pass");' 我在交易结束时遇到了一些问题,最初使用Pass没有引号。 这要求你调用'Pass'变量,如果你使用引号,它将把它作为文字。 Sorry this ...
  • 不知道你是否知道这一点,但这是我调试在控制器模式下运行的TruClient(和所有)脚本的地方。 1)转到“运行”选项卡 2)双击要查看的用户组。 3)右键单击要查看的用户(某些可能正在运行或失败) 4)选择“显示用户日志” 这将显示脚本的控制台输出,因此将显示步骤开始或结束,以及任何具有脚本的LR.log语句。 您可以在运行时设置中启用错误获取屏幕截图(我认为默认情况下可以启用),但我没有任何运气可以获得每个步骤的屏幕截图。 如果重新启动用户,则会覆盖您的日志。 Not sure if you know ...
  • 从LoadRunner帮助文档。 “注意:要运行各种协议,您必须拥有所需协议的全局许可证或许可证。有关详细信息,请在LoadRunner Launcher中选择配置> LoadRunner许可证(开始>程序> LoadRunner> LoadRunner)。” 我认为这意味着你需要专门针对TruClient协议的许可证,除非你拥有的400是全球性的。 我不是Performance Center管理员会介意你的,我只是偶尔会破解一两个脚本。 From the LoadRunner Help documenta ...
  • 状态随着每个请求而变化。 因此,几乎每个请求(当它存在时)都需要关联ViewState。 还有jsessionstate出现在Java应用程序上,ViewState通常与ASP和ASP.Net相关联 State is something which changes with every request. So, ViewState is something you will need to correlate for almost every request (when it is present). Th ...
  • 控制器似乎是用Delphi编写的,或者是Borland古老的(现已消失的)C变体。 VUgen似乎是一个本机C应用程序,编辑器是SlickEdit(请参阅http://en.wikipedia.org/wiki/SlickEdit )。 VUGen的C解释器并不是SlickEdit的Slick-C,但我很确定它是一个许可的商业产品。 控制器和VUGen创建的LR测试之间的在线通信协议可能是专有的,我认为基于RPC。 您可以通过管理文档深入了解所需的开放端口,这可能会提供足够的提示来猜测协议。 Control ...
  • 您的问题有两种可能的解决方案: 1)如果您正在使用“新用户模拟”(运行时设置 - >重放取消选中“为每次迭代模拟新用户”(第一个选项)) 如果你不想做(1)那么: 2)将登录信息放入操作中。 当检查“为每次迭代模拟新用户”时,我们切断了迭代之间的所有连接,但由于init只发生一次,在迭代之前,我们在init之后执行。 There are two possible solutions for your issue: 1) If you are using "new user simulation" (Runt ...
  • 您最有可能尝试在脚本中使用加载项,例如Adobe。 有一个错误(或根据帮助台的未记录的功能)。 当在控制器中使用添加总路径影响脚本执行名称的长度时。 您需要使用短名称保存脚本并将其保存在HDD的根目录中,以解决您遇到的问题。 This issue was fixed by downgrading LoadRunner to version 11.52 to make it compatible with the version of ALM Performance Center installed on s ...

相关文章

更多

最新问答

更多
  • 获取MVC 4使用的DisplayMode后缀(Get the DisplayMode Suffix being used by MVC 4)
  • 如何通过引用返回对象?(How is returning an object by reference possible?)
  • 矩阵如何存储在内存中?(How are matrices stored in memory?)
  • 每个请求的Java新会话?(Java New Session For Each Request?)
  • css:浮动div中重叠的标题h1(css: overlapping headlines h1 in floated divs)
  • 无论图像如何,Caffe预测同一类(Caffe predicts same class regardless of image)
  • xcode语法颜色编码解释?(xcode syntax color coding explained?)
  • 在Access 2010 Runtime中使用Office 2000校对工具(Use Office 2000 proofing tools in Access 2010 Runtime)
  • 从单独的Web主机将图像传输到服务器上(Getting images onto server from separate web host)
  • 从旧版本复制文件并保留它们(旧/新版本)(Copy a file from old revision and keep both of them (old / new revision))
  • 西安哪有PLC可控制编程的培训
  • 在Entity Framework中选择基类(Select base class in Entity Framework)
  • 在Android中出现错误“数据集和渲染器应该不为null,并且应该具有相同数量的系列”(Error “Dataset and renderer should be not null and should have the same number of series” in Android)
  • 电脑二级VF有什么用
  • Datamapper Ruby如何添加Hook方法(Datamapper Ruby How to add Hook Method)
  • 金华英语角.
  • 手机软件如何制作
  • 用于Android webview中图像保存的上下文菜单(Context Menu for Image Saving in an Android webview)
  • 注意:未定义的偏移量:PHP(Notice: Undefined offset: PHP)
  • 如何读R中的大数据集[复制](How to read large dataset in R [duplicate])
  • Unity 5 Heighmap与地形宽度/地形长度的分辨率关系?(Unity 5 Heighmap Resolution relationship to terrain width / terrain length?)
  • 如何通知PipedOutputStream线程写入最后一个字节的PipedInputStream线程?(How to notify PipedInputStream thread that PipedOutputStream thread has written last byte?)
  • python的访问器方法有哪些
  • DeviceNetworkInformation:哪个是哪个?(DeviceNetworkInformation: Which is which?)
  • 在Ruby中对组合进行排序(Sorting a combination in Ruby)
  • 网站开发的流程?
  • 使用Zend Framework 2中的JOIN sql检索数据(Retrieve data using JOIN sql in Zend Framework 2)
  • 条带格式类型格式模式编号无法正常工作(Stripes format type format pattern number not working properly)
  • 透明度错误IE11(Transparency bug IE11)
  • linux的基本操作命令。。。