[英]Restful Webservices using Java, Apache Axis2, Hibernate and MySQL and its performance
我在应用程序中阅读了某些地方使用的webservcies。 经过大量的研究,我能够创建一个Web服务,它将接受Json和JsonP两种格式作为请求和响应。 我使用Java,Apache Axis2,Hibernate和MySQL作为数据库开发了webservcies。 问题很少,我不知道如何解决?
插入或删除选项,有时如果一次超过两个用户调用插入或删除查询进入睡眠模式的任何行的服务,下次有人尝试获取他无法获取的服务。 根据服务器日志记录,它说错误SQL锁定状态。 如果我在MYSQL中检查Processlist它在Sleep中显示该查询,我必须杀死才能恢复。
webservice的性能似乎没有达到标记,它需要时间更多的时间,因为我所经历的不应该。 简单来说,如何通过服务获得更好的性能
如何实现安全功能,以便在用户登录时,可以为他/她提供id并验证该id,以便可以防止未经授权的访问
或者只是指导我可以使用Java最合适和最优化的Web服务方法
对此问题的回答并非针对Android。 以下是我的调查,可能对您有用。
关于MySQL连接进入睡眠模式的问题,您可以执行以下操作。
blocking-timeout-millis
, idle-timeout-minutes
等。 OracleStaleConnectionChecker
以获取选项。 为了执行插入/删除操作和SQL锁定状态,请尝试在每次请求时重新排序您要触发的查询序列。 这可能不是死锁情况,但正确排序DB查询肯定会导致更少的锁定时间和更好的性能。
这个答案可能对您有用。 Hibernate:尝试获取锁定时发现死锁
您开发的Web服务可能需要进行一些性能优化才能使其达到标准。 以下是您可以采取的最初几个步骤,以提高性能。
除了上述优化之外,您还可以使用多种框架和工具来评估代码质量及其性能。 PMD,FindBugs,JMeter,Java profiler是其中的一小部分。
Shishir
您将不得不分析您的服务器并查看花费的时间。 我非常喜欢YourKit来做线程配置文件。 JDK附带的visualvm也可以提供帮助。
您的Web服务可能很慢的原因有很多种:
你将不得不得到标记来告诉你从A到B到C到D需要多长时间才能回到C回到B回到某种程度。 我们会从这里大量猜测你的程序到底发生了什么,但是我们可以给你一些想法/工具来解决它。
如果您使用YourKit,请将其连接到您的服务器进程。 没有其他任何东西连接到您的服务器(例如您的客户端没有发送请求)。 尝试与客户端请求,您应该看到您的接受线程接收HTTP请求,然后委托您的处理线程或自己处理。 您可以使用YourKit查看在该通话时间内在不同功能上花费的时间。
尝试与您的客户打电话。 尝试使用像wget这样的简单HTTP请求工具,或者你的IDE有一个web服务测试工具(例如intellij),或者你可以下载一个简单的HTTP测试工具。
通过在只输出响应的简单工具中对其进行测试,您可以消除任何客户端处理问题。 您还可以在Chrome或Firefox中实现类似的测试,并使用开发人员工具查看完成请求的时间。
根据我的经验,处理请求和委托的框架可能会引入一些性能问题。 我因为性能问题而将Grails从生产环境中剥离出来(在任何Grails / Groovy火焰出现之前,我们的运行速度远高于典型的Web应用程序,我相信Grails在最后一对中取得了一些进展多年......唉,当时不适合我的需要)
顺便说一句,我怀疑你是在操作一个负载,你将批评你选择使用的Web服务框架。 我对Spring MVC和DropWizard(Jersey JAX-RS)感到满意,Grails也很容易使用。
您应该在Web服务中进行简单的静态内容响应,并查看返回与发出数据库调用的请求的速度。
另外,你在MySQL中使用什么样的表? InnoDB的? MyISAM数据? 他们有不同的锁定方案。 这可能会导致您的MySQL问题。
所有这一切的关键,将问题分解成部分,并逐个测量每个部分并逐个消除部分,直到你去,每次我做X它都比较慢(就像每次我使数据库调用它的速度慢)
在Java中,您可以通过文档/论坛在线找到更多支持的方式是使用Spring MVC将Web服务开发为REST Web服务。
您可以基于此资源并从那里获取它:
使用Spring,您可以轻松创建RestFul Web服务,spring可以完成您所需的所有基础工作。 正如其他人所提到的,您可以在任何类型的客户端中使用Web服务 - 包括Android。
这里有详细的指南: https : //spring.io/guides/gs/rest-service/
以下是我的建议:
我认为mhoglan的答案足够详细。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.