雨宫琴音电影|杏吧直播app官方下载|蕾丝小内内被撕开强入|影音先锋资源|国产 高速 亚洲 欧美 在线|今夜无人入睡免费完整版|97精品视频播放

刷卡機鏈接服務(wù)器超時,服務(wù)響應(yīng)超時

瀏覽:84 發(fā)布日期:2023-04-04 00:00:00 投稿人:佚名投稿

網(wǎng)上關(guān)于刷卡機鏈接服務(wù)器超時,服務(wù)響應(yīng)超時的刷卡知識比較多,也有關(guān)于刷卡機鏈接服務(wù)器超時的問題,今天第一pos網(wǎng)(m.fzog.com.cn)為大家整理刷卡常見知識,未來的我們終成一代卡神。

本文目錄一覽:

1、刷卡機鏈接服務(wù)器超時

2、pos機一直顯示連接服務(wù)器 pos機一直顯示連接服務(wù)器原因簡述

3、刷卡機顯示批送未完成怎么處理?

刷卡機鏈接服務(wù)器超時

問題描述:

部署在新搭建的服務(wù)器上的服務(wù)一直處于未響應(yīng)狀態(tài),每次發(fā)送請求等待若干秒之后只能接收到底層返回的超時報錯信息。

原因分析:

我們系統(tǒng)是一個服務(wù)化的單體應(yīng)用,主要包含了一組業(yè)務(wù)服務(wù)和一個網(wǎng)關(guān)服務(wù),外部請求一般都是先由網(wǎng)關(guān)服務(wù)做一些前置處理,然后根據(jù)請求格式和程序自定義配置路由到相應(yīng)業(yè)務(wù)服務(wù)來進行業(yè)務(wù)處理,然后業(yè)務(wù)服務(wù)根據(jù)外部請求做完業(yè)務(wù)處理之后,也會將返回信息交給網(wǎng)關(guān)服務(wù)來統(tǒng)一返回。

所以正常情況下,一次服務(wù)調(diào)用引發(fā)的程序執(zhí)行,網(wǎng)關(guān)服務(wù)與相應(yīng)的業(yè)務(wù)服務(wù)配置好的日志文件都會有日志刷出來。

讓測試重現(xiàn)場景后,監(jiān)控日志可以看到網(wǎng)關(guān)服務(wù)是有接收到請求并最終把請求路由到了業(yè)務(wù)服務(wù)的,但是業(yè)務(wù)服務(wù)卻始終沒有動靜,也就是時候沒看到有被調(diào)用的痕跡。嗯,有點奇怪~

可以先總結(jié)下問題:網(wǎng)關(guān)服務(wù)應(yīng)該是沒問題的,反正接收到請求并且把請求轉(zhuǎn)發(fā)出去了,已經(jīng)做好自己的事了。那么問題很有可能出在業(yè)務(wù)服務(wù)上了。

不過還是要排除其他影響,比如說下面最常見的三個:

1、服務(wù)器內(nèi)存、CPU影響?

先用用top查看服務(wù)器資源使用情況,CPU、內(nèi)存使用率實在看不出什么問題來

2、JVM內(nèi)存影響?

有可能JVM一直在做GC,導(dǎo)致應(yīng)用暫停時間過長。所以先用jstat看了下JVM各個分代的使用情況和GC的大概頻率(jstat -gccause pid 10000,這里當時忘記截圖了,以平時的經(jīng)驗來看的話,都還比較正常,就先略過~)。

用jmap查看JVM內(nèi)存使用情況(jmap -heap pid),新生代、老年大、持久帶使用率都還算不太高。

這里提一下,從下面的圖里可以看到老年代的標識是:concurrent mark-seeep generation,這就代表老年代使用的垃圾收集器是CMS,然后使用率已經(jīng)接近70%了。有這么一種場景,當你老年代的垃圾回收器是CMS,然后你配置了JVM啟動參數(shù):

-XX:CMSInitiatingOccupancyFraction=70-XX:+UseCMSInitiatingOccupancyOnly

這就代表著只要老年大使用率到達70%,JVM就會對老年代執(zhí)行CMSGC來回收內(nèi)存。如果老年代內(nèi)存使用率一直大于等于70%,就會導(dǎo)致JVM頻繁CMSGC~

但是當時我們并沒有加這兩個參數(shù),所以JVM是否要執(zhí)行CMSGC是會實時動態(tài)計算的,老年代使用率接近70%并不是什么大問題。

3、相應(yīng)線程哪里被阻塞了?

查看JVM線程狀態(tài)可以用jstack來打印線程快照(jstack pid)。將線程快照文件拉到本地來分析,發(fā)現(xiàn)在這個線程堆棧文件中,已經(jīng)有5個請求業(yè)務(wù)服務(wù)的工作線程了,而且都是處于Object.wait()(這個就是在等待synchronized同步鎖喚醒的情況了)的狀態(tài)。

我們的各個業(yè)務(wù)服務(wù)呢,分別負責(zé)不同的業(yè)務(wù)處理部分(好像說了一句廢話)。然后業(yè)務(wù)服務(wù)與業(yè)務(wù)服務(wù)之間,是采用線程池隔離的機制。即每個業(yè)務(wù)服務(wù)是會起一個線程池去處理路由過來的請求。線程池的核心線程數(shù)和最大線程數(shù)都是5,當請求數(shù)大于5會將剩下的請求先丟到隊列中去,等待空閑線程來處理。

所以這就解釋了為什么會看到業(yè)務(wù)服務(wù)沒有被調(diào)用的現(xiàn)象,因為后續(xù)發(fā)的請求都丟到隊列里面去了,還沒來得及處理它們。

但是為什么前面的5個請求都會阻塞呢?看一下線程棧:

?????????????問號馬賽克????????????????????? nid=0x29808 in Object.wait() [0x0000000002e8c000] java.lang.Thread.State: WAITING (on object monitor) at java.lang.Object.wait(Native Method) - waiting on <0x00000007d801a670> (a org.apache.commons.pool.impl.GenericObjectPool$Latch) at java.lang.Object.wait(Object.java:503) at org.apache.commons.pool.impl.GenericObjectPool.borrowObject(GenericObjectPool.java:1118) - locked <0x00000007d801a670> (a org.apache.commons.pool.impl.GenericObjectPool$Latch) at org.apache.commons.dbcp.PoolingDataSource.getConnection(PoolingDataSource.java:106) at org.apache.commons.dbcp.BasicDataSource.getConnection(BasicDataSource.java:1044) at org.springframework.jdbc.datasource.DataSourceUtils.doGetConnection(DataSourceUtils.java:111) at org.springframework.jdbc.datasource.DataSourceUtils.getConnection(DataSourceUtils.java:77) at org.mybatis.spring.transaction.SpringManagedTransaction.openConnection(SpringManagedTransaction.java:82) at org.mybatis.spring.transaction.SpringManagedTransaction.getConnection(SpringManagedTransaction.java:68) at org.apache.ibatis.executor.BaseExecutor.getConnection(BaseExecutor.java:338) at org.apache.ibatis.executor.SimpleExecutor.prepareStatement(SimpleExecutor.java:84) at org.apache.ibatis.executor.SimpleExecutor.doQuery(SimpleExecutor.java:62) at org.apache.ibatis.executor.BaseExecutor.queryFromDatabase(BaseExecutor.java:326) at org.apache.ibatis.executor.BaseExecutor.query(BaseExecutor.java:156) at org.apache.ibatis.executor.CachingExecutor.query(CachingExecutor.java:109) at org.apache.ibatis.executor.CachingExecutor.query(CachingExecutor.java:83) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.lang.reflect.Method.invoke(Method.java:606) at org.apache.ibatis.plugin.Invocation.proceed(Invocation.java:49) ?????????????問號馬賽克????????????????????? at org.apache.ibatis.plugin.Plugin.invoke(Plugin.java:61) at com.sun.proxy.$Proxy19.query(Unknown Source) at org.apache.ibatis.session.defaults.DefaultSqlSession.selectList(DefaultSqlSession.java:148) at org.apache.ibatis.session.defaults.DefaultSqlSession.selectList(DefaultSqlSession.java:141) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.lang.reflect.Method.invoke(Method.java:606) at org.mybatis.spring.SqlSessionTemplate$SqlSessionInterceptor.invoke(SqlSessionTemplate.java:433) at com.sun.proxy.$Proxy13.selectList(Unknown Source) at org.mybatis.spring.SqlSessionTemplate.selectList(SqlSessionTemplate.java:230)

從這個線程堆??梢钥闯鍪窃诓樵償?shù)據(jù)庫獲取連接的時候一直阻塞在那里了。所以從最開始的第一個請求卡頓到這里不能再往下執(zhí)行,然后接下來四個也同樣卡在這個位置執(zhí)行不了,再到后面的請求干脆就全緩存在隊列中來業(yè)務(wù)服務(wù)都無法進去。

但是為什么會阻塞在操作數(shù)據(jù)庫拿連接的地方呢,繼續(xù)往下挖,最終定位到GenericObjectPool。

GenericObjectPool是什么呢,它是一個對象池,而java很多池管理的概念,如線程池、數(shù)據(jù)庫連接池其實都是繼承自它的。因為這個是操作數(shù)據(jù)庫時的線程棧,而且堆棧的頂層是阻塞到GenericObjectPool的邏輯內(nèi),所以這時候懷疑是數(shù)據(jù)源的配置有問題。

檢查一下數(shù)據(jù)源配置,看到數(shù)據(jù)源的配置中的如下三個配置:

jdbc.maxActive = 0jdbc.maxIdle = 0jdbc.maxWait = -1

要知道m(xù)axActive(最大連接數(shù))為0會讓你永遠從數(shù)據(jù)庫拿不到連接;

maxIdle(最大空閑連接數(shù))為0會導(dǎo)致連接池中永遠沒有空閑連接數(shù),對象都是在需要的時候創(chuàng)建、用完的時候又立馬destroy了;

而為maxWait(最大等待時間)-1,即如果拿不到連接會無限等待。尤其是在當被依賴的服務(wù)由于某些故障而響應(yīng)極慢時,會有大量線程阻塞,最終導(dǎo)致線程耗盡,服務(wù)卡死,用戶請求被拒絕。

解決方案:

找到問題之后我們再把maxActive、maxIdle都設(shè)為80,maxWait設(shè)為3000,單位為毫秒(當然要根據(jù)具體情況設(shè)值),然后重啟數(shù)據(jù)源使其配置生效,再發(fā)請求調(diào)用業(yè)務(wù)服務(wù)就已經(jīng)能正常處理了~

pos機一直顯示連接服務(wù)器 pos機一直顯示連接服務(wù)器原因簡述

pos機一直顯示連接服務(wù)器原因如耐碧旦下。

1、如果是移動POS機器,說明是內(nèi)置流量卡已經(jīng)失效,需要更換新流量卡或者充值;

2、如果是網(wǎng)慧銀線或者電話POS,請檢查網(wǎng)線連接是否順暢。

3、顯示一直在連接中,說明網(wǎng)昌擾絡(luò)有故障,連接不上,是網(wǎng)絡(luò)原因。

刷卡機顯示批送未完成怎么處理?

POS機顯示批上送的意思就是將你已經(jīng)完成的刷卡數(shù)據(jù)傳送到銀行(不定期會出現(xiàn)屬于正常不必擔(dān)心),銀行收到你的數(shù)據(jù)后就會在晚上清算的時候?qū)①Y金劃入你的賬戶,接收超時,接收通訊失敗主要是由于POS機的通訊不暢造成的,如果你的POS機是移動機器建議你將機器拿到信號好的地方,

如果你固定機器可能你的中國線不太穩(wěn)定,重新將中國線連接一下就可以,這個現(xiàn)象屬于正常機具通信問題,不必擔(dān)心

以上就是關(guān)于刷卡機鏈接服務(wù)器超時,服務(wù)響應(yīng)超時的知識,后面我們會繼續(xù)為大家整理關(guān)于刷卡機鏈接服務(wù)器超時的知識,希望能夠幫助到大家!

轉(zhuǎn)載請帶上網(wǎng)址:http://m.fzog.com.cn/shuaka/33714.html

版權(quán)聲明:本文內(nèi)容由互聯(lián)網(wǎng)用戶自發(fā)貢獻,該文觀點僅代表作者本人。本站僅提供信息存儲空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如發(fā)現(xiàn)本站有涉嫌抄襲侵權(quán)/違法違規(guī)的內(nèi)容, 請發(fā)送郵件至 babsan@163.com 舉報,一經(jīng)查實,本站將立刻刪除。
聯(lián)系我們
訂購聯(lián)系:小莉
微信聯(lián)系方式
地址:深圳市寶安區(qū)固戍聯(lián)誠發(fā)產(chǎn)業(yè)園木星大廈

公司地址:深圳市寶安區(qū)固戍聯(lián)誠發(fā)產(chǎn)業(yè)園木星大廈

舉報投訴 免責(zé)申明 版權(quán)申明 廣告服務(wù) 投稿須知 技術(shù)支持:第一POS網(wǎng) Copyright@2008-2030 深圳市慧聯(lián)實業(yè)有限公司 備案號:粵ICP備18141915號