查看: 6474|回复: 2

多人同时打卡报错问题

升级   0.1%

96

主题

88

回帖

10

积分

注册会员

Rank: 2

积分
10
发表于 2020-10-7 15:36:03 | 显示全部楼层 |阅读模式
OA运行了一段时间,上班时间打卡一般没什么问题,下班时间大约350人同时打卡有的人就会出现报错,手机端显示“打卡失败”,没报错打卡也挺慢的,
2020-09-25 17:00:55.157 ERROR [9a5ead15-74b6-4064-a2cf-f2b75c3840ad] com.x.attendance.assemble.control.jaxrs.attendancedetail.AttendanceDetailMobileAction - commit error > person:XX@b815755c-f921-4e64-b8d5-8ab4a1e09dc8@P, method:POST, request:http://175.19.141.38:30020/x_attendance_assemble_control/jaxrs/attendancedetail/mobile/recive, remote host:36.104.181.90 address:36.104.181.90, head:x-token:FESWLa4WfQw6qSIjxpdOILPHsgjsWpJBqZe6VakOpwllJ1yno--HCq8QK2SHD4Z1Gpbp0LauwMVAzqcj0dtjFl5kVp4i3iSPtPTW19qBfdg
x-client:android
Connection:keep-alive
User-Agent:okhttp/3.11.0
Host:175.19.141.38:30020
Accept-Encoding:gzip
Content-Length:357
Content-Type:application/json;charset=UTF-8, body:.
java.lang.Exception: commit error
    at com.x.base.core.container.EntityManagerContainer.commit(EntityManagerContainer.java:962)
    at com.x.attendance.assemble.control.service.AttendanceDetailServiceAdv.pushToDetail(AttendanceDetailServiceAdv.java:277)
    at com.x.attendance.assemble.control.jaxrs.attendancedetail.ActionReciveAttendanceMobile.execute(ActionReciveAttendanceMobile.java:131)
    at com.x.attendance.assemble.control.jaxrs.attendancedetail.AttendanceDetailMobileAction.reciveForMobile(AttendanceDetailMobileAction.java:106)
    at sun.reflect.GeneratedMethodAccessor2159.invoke(Unknown Source)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke(Method.java:498)
    at org.glassfish.jersey.server.model.internal.ResourceMethodInvocationHandlerFactory$1.invoke(ResourceMethodInvocationHandlerFactory.java:81)
    at org.glassfish.jersey.server.model.internal.AbstractJavaResourceMethodDispatcher$1.run(AbstractJavaResourceMethodDispatcher.java:144)
    at org.glassfish.jersey.server.model.internal.AbstractJavaResourceMethodDispatcher.invoke(AbstractJavaResourceMethodDispatcher.java:161)
    at org.glassfish.jersey.server.model.internal.JavaResourceMethodDispatcherProvider$VoidOutInvoker.doDispatch(JavaResourceMethodDispatcherProvider.java:143)
    at org.glassfish.jersey.server.model.internal.AbstractJavaResourceMethodDispatcher.dispatch(AbstractJavaResourceMethodDispatcher.java:99)
    at org.glassfish.jersey.server.model.ResourceMethodInvoker.invoke(ResourceMethodInvoker.java:389)
    at org.glassfish.jersey.server.model.ResourceMethodInvoker.apply(ResourceMethodInvoker.java:347)
    at org.glassfish.jersey.server.model.ResourceMethodInvoker.apply(ResourceMethodInvoker.java:102)
    at org.glassfish.jersey.server.ServerRuntime$2.run(ServerRuntime.java:326)
    at org.glassfish.jersey.internal.Errors$1.call(Errors.java:271)
    at org.glassfish.jersey.internal.Errors$1.call(Errors.java:267)
    at org.glassfish.jersey.internal.Errors.process(Errors.java:315)
    at org.glassfish.jersey.internal.Errors.process(Errors.java:297)
    at org.glassfish.jersey.internal.Errors.process(Errors.java:267)
    at org.glassfish.jersey.process.internal.RequestScope.runInScope(RequestScope.java:317)
    at org.glassfish.jersey.server.ServerRuntime.process(ServerRuntime.java:305)
    at org.glassfish.jersey.server.ApplicationHandler.handle(ApplicationHandler.java:1154)
    at org.glassfish.jersey.servlet.WebComponent.serviceImpl(WebComponent.java:473)
    at org.glassfish.jersey.servlet.WebComponent.service(WebComponent.java:427)
    at org.glassfish.jersey.servlet.ServletContainer.service(ServletContainer.java:388)
    at org.glassfish.jersey.servlet.ServletContainer.service(ServletContainer.java:341)
    at org.glassfish.jersey.servlet.ServletContainer.service(ServletContainer.java:228)
    at org.eclipse.jetty.servlet.ServletHolder.handle(ServletHolder.java:755)
    at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1617)
    at org.eclipse.jetty.websocket.server.WebSocketUpgradeFilter.doFilter(WebSocketUpgradeFilter.java:226)
    at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1604)
    at com.x.base.core.project.jaxrs.ManagerUserJaxrsFilter.doFilter(ManagerUserJaxrsFilter.java:39)
    at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1604)
    at com.alibaba.druid.support.http.WebStatFilter.doFilter(WebStatFilter.java:124)
    at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1604)
    at org.eclipse.jetty.servlet.ServletHandler.doHandle(ServletHandler.java:545)
    at org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:143)
    at org.eclipse.jetty.security.SecurityHandler.handle(SecurityHandler.java:590)
    at org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:127)
    at org.eclipse.jetty.server.handler.ScopedHandler.nextHandle(ScopedHandler.java:235)
    at org.eclipse.jetty.server.session.SessionHandler.doHandle(SessionHandler.java:1607)
    at org.eclipse.jetty.server.handler.ScopedHandler.nextHandle(ScopedHandler.java:233)
    at org.eclipse.jetty.server.handler.ContextHandler.doHandle(ContextHandler.java:1297)
    at org.eclipse.jetty.server.handler.ScopedHandler.nextScope(ScopedHandler.java:188)
    at org.eclipse.jetty.servlet.ServletHandler.doScope(ServletHandler.java:485)
    at org.eclipse.jetty.server.session.SessionHandler.doScope(SessionHandler.java:1577)
    at org.eclipse.jetty.server.handler.ScopedHandler.nextScope(ScopedHandler.java:186)
    at org.eclipse.jetty.server.handler.ContextHandler.doScope(ContextHandler.java:1212)
    at org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:141)
    at org.eclipse.jetty.server.handler.HandlerList.handle(HandlerList.java:59)
    at org.eclipse.jetty.server.handler.gzip.GzipHandler.handle(GzipHandler.java:717)
    at org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:127)
    at org.eclipse.jetty.server.Server.handle(Server.java:500)
    at org.eclipse.jetty.server.HttpChannel.lambda$handle$1(HttpChannel.java:383)
    at org.eclipse.jetty.server.HttpChannel.dispatch(HttpChannel.java:547)
    at org.eclipse.jetty.server.HttpChannel.handle(HttpChannel.java:375)
    at org.eclipse.jetty.server.HttpConnection.onFillable(HttpConnection.java:270)
    at org.eclipse.jetty.io.AbstractConnection$ReadCallback.succeeded(AbstractConnection.java:311)
    at org.eclipse.jetty.io.FillInterest.fillable(FillInterest.java:103)
    at org.eclipse.jetty.io.ChannelEndPoint$2.run(ChannelEndPoint.java:117)
    at org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.runTask(EatWhatYouKill.java:336)
    at org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.doProduce(EatWhatYouKill.java:313)
    at org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.tryProduce(EatWhatYouKill.java:171)
    at org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.run(EatWhatYouKill.java:129)
    at org.eclipse.jetty.util.thread.ReservedThreadExecutor$ReservedThread.run(ReservedThreadExecutor.java:388)
    at org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.java:806)
    at org.eclipse.jetty.util.thread.QueuedThreadPool$Runner.run(QueuedThreadPool.java:938)
    at java.lang.Thread.run(Thread.java:748)
Caused by: <openjpa-3.1.0-rafcec21a1d489dff682a3ce7986fac6a1c80e8e0 fatal store error> org.apache.openjpa.persistence.RollbackException: The transaction has been rolled back.  See the nested exceptions for details on the errors that occurred.
FailedObject: com.x.attendance.entity.AttendanceDetailMobile-161f0295-79e8-4d4d-bdd0-0273c1bfaa5c
    at org.apache.openjpa.persistence.EntityManagerImpl.commit(EntityManagerImpl.java:693)
    at com.x.base.core.container.EntityManagerContainer.commit(EntityManagerContainer.java:958)
    ... 69 more
Caused by: <openjpa-3.1.0-rafcec21a1d489dff682a3ce7986fac6a1c80e8e0 fatal general error> org.apache.openjpa.persistence.PersistenceException: The transaction has been rolled back.  See the nested exceptions for details on the errors that occurred.
FailedObject: com.x.attendance.entity.AttendanceDetailMobile-161f0295-79e8-4d4d-bdd0-0273c1bfaa5c
    at org.apache.openjpa.kernel.BrokerImpl.newFlushException(BrokerImpl.java:2470)
    at org.apache.openjpa.kernel.BrokerImpl.flush(BrokerImpl.java:2308)
    at org.apache.openjpa.kernel.BrokerImpl.flushSafe(BrokerImpl.java:2199)
    at org.apache.openjpa.kernel.BrokerImpl.beforeCompletion(BrokerImpl.java:2116)
    at org.apache.openjpa.kernel.LocalManagedRuntime.commit(LocalManagedRuntime.java:84)
    at org.apache.openjpa.kernel.BrokerImpl.commit(BrokerImpl.java:1600)
    at org.apache.openjpa.kernel.DelegatingBroker.commit(DelegatingBroker.java:1035)
    at org.apache.openjpa.persistence.EntityManagerImpl.commit(EntityManagerImpl.java:669)
    ... 70 more
Caused by: <openjpa-3.1.0-rafcec21a1d489dff682a3ce7986fac6a1c80e8e0 fatal store error> org.apache.openjpa.persistence.OptimisticLockException: Unable to obtain an object lock on "com.x.attendance.entity.AttendanceDetailMobile-161f0295-79e8-4d4d-bdd0-0273c1bfaa5c".
FailedObject: com.x.attendance.entity.AttendanceDetailMobile-161f0295-79e8-4d4d-bdd0-0273c1bfaa5c
    at org.apache.openjpa.jdbc.sql.DBDictionary.narrow(DBDictionary.java:5232)
    at org.apache.openjpa.jdbc.sql.DBDictionary.newStoreException(DBDictionary.java:5210)
    at org.apache.openjpa.jdbc.sql.SQLExceptions.getStore(SQLExceptions.java:134)
    at org.apache.openjpa.jdbc.sql.SQLExceptions.getStore(SQLExceptions.java:75)
    at org.apache.openjpa.jdbc.kernel.PreparedStatementManagerImpl.flushAndUpdate(PreparedStatementManagerImpl.java:146)
    at org.apache.openjpa.jdbc.kernel.BatchingPreparedStatementManagerImpl.flushAndUpdate(BatchingPreparedStatementManagerImpl.java:80)
    at org.apache.openjpa.jdbc.kernel.PreparedStatementManagerImpl.flushInternal(PreparedStatementManagerImpl.java:102)
    at org.apache.openjpa.jdbc.kernel.PreparedStatementManagerImpl.flush(PreparedStatementManagerImpl.java:90)
    at org.apache.openjpa.jdbc.kernel.ConstraintUpdateManager.flush(ConstraintUpdateManager.java:554)
    at org.apache.openjpa.jdbc.kernel.ConstraintUpdateManager.flush(ConstraintUpdateManager.java:111)
    at org.apache.openjpa.jdbc.kernel.BatchingConstraintUpdateManager.flush(BatchingConstraintUpdateManager.java:61)
    at org.apache.openjpa.jdbc.kernel.AbstractUpdateManager.flush(AbstractUpdateManager.java:108)
    at org.apache.openjpa.jdbc.kernel.AbstractUpdateManager.flush(AbstractUpdateManager.java:81)
    at org.apache.openjpa.jdbc.kernel.JDBCStoreManager.flush(JDBCStoreManager.java:757)
    at org.apache.openjpa.kernel.DelegatingStoreManager.flush(DelegatingStoreManager.java:146)
    ... 77 more
Caused by: org.apache.openjpa.lib.jdbc.ReportingSQLException: 事务(进程 ID 97)与另一个进程被死锁在 锁 资源上,并且已被选作死锁牺牲品。请重新运行该事务。 {prepstmnt 443318983 UPDATE ATDC_ATTENDANCE_DETAIL_MOBILE SET xupdateTime = ?, xrecordStatus = ? WHERE xid = ?} [code=1205, state=40001]
    at org.apache.openjpa.lib.jdbc.LoggingConnectionDecorator.wrap(LoggingConnectionDecorator.java:219)
    at org.apache.openjpa.lib.jdbc.LoggingConnectionDecorator.wrap(LoggingConnectionDecorator.java:195)
    at org.apache.openjpa.lib.jdbc.LoggingConnectionDecorator.access$1000(LoggingConnectionDecorator.java:58)
    at org.apache.openjpa.lib.jdbc.LoggingConnectionDecorator$LoggingConnection$LoggingPreparedStatement.executeUpdate(LoggingConnectionDecorator.java:1188)
    at org.apache.openjpa.lib.jdbc.DelegatingPreparedStatement.executeUpdate(DelegatingPreparedStatement.java:308)
    at org.apache.openjpa.jdbc.kernel.JDBCStoreManager$CancelPreparedStatement.executeUpdate(JDBCStoreManager.java:1856)
    at org.apache.openjpa.jdbc.kernel.PreparedStatementManagerImpl.executeUpdate(PreparedStatementManagerImpl.java:271)
    at org.apache.openjpa.jdbc.kernel.PreparedStatementManagerImpl.flushAndUpdate(PreparedStatementManagerImpl.java:121)
    ... 87 more
所用数据库为SQLServer2012,服务器内存16G,6核CPU,单服务器没有做分布式,100M网但非独立带宽,用测速网测瞬时网速大约60Mb,配置比官方给出配置低一些,但是官方给的最低配置对应1000人以下,我们这目前只有不到500人在用。问一下做没做过相关测试,350人并行打卡大约什么配置可以流畅一些。
回复

使用道具 举报

升级   100%

139

主题

1万

回帖

4万

积分

超级版主

Rank: 8Rank: 8

积分
41458
发表于 2020-10-9 10:23:26 | 显示全部楼层
您好:
如果是同时操作,可能会存在这样的情况。
建议还是升级配置!
回复

使用道具 举报

升级   0.1%

96

主题

88

回帖

10

积分

注册会员

Rank: 2

积分
10
发表于 2022-2-21 08:35:47 | 显示全部楼层
论坛管理员 发表于 2020-10-9 10:23
您好:
如果是同时操作,可能会存在这样的情况。
建议还是升级配置!

您好,最近升级了一次服务器,配置应该够了,但下班点几百人打卡还是会出现打卡卡顿及出现“打卡失败”的情况,问一下咱们这做没做过相关的压力测试,几百人在几分钟内同时打卡配置应该是什么样的?

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
回复

使用道具 举报

发表回复

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

联系客服 关注微信 下载APP 返回顶部 返回列表
viewthread