精华内容
下载资源
问答
  • 超时设置脚本pp.sh

    2017-01-04 22:16:14
    #此脚本作用为,设置中中间业务交易超时,其中具体输入功能如下: #1:设置成功超时 #2:设置失败超时 #3:恢复正常 #q:退出 #xtmc_dx=Ibps #xtmc=ibps #cd ~/bafe/src/$xtmc/busi if [ $# != ...
    #!/usr/bin/ksh
    


    #此脚本作用为,设置中中间业务交易超时,其中具体输入功能如下:
    #1:设置成功超时
    #2:设置失败超时
    #3:恢复正常
    #q:退出


    #xtmc_dx=Ibps
    #xtmc=ibps


    #cd ~/bafe/src/$xtmc/busi


    if [ $# != 1 ]
    then
    echo "Usage:$0 系统标识(1:中间业务系统,2:网银互联)"
    return
    elif [ $1 == 1 ]
    then
            xtmc_dx=Inbu
            xtmc=inbu
    elif [ $1 == 2 ]
    then
            xtmc_dx=Ibps
            xtmc=ibps
    elif [ $1 == 3 ]
    then
            xtmc_dx=Fund
            xtmc=fund
    else
    echo "Usage:$0 系统标识(1:中间业务系统,2:网银互联)"
    return
    fi


    cd ~/bafe/src/$xtmc/busi


    echo $xtmc
    date1=`date +%Y%m%d`


    #设置成功超时
    setSuccTransOvertime(){
    if [ "${succTransCode[1]}" == "" ]
    then
    echo "\t无需设置成功超时"
    else
    rm ${xtmc_dx}_PreProcess.pc && svn up ${xtmc_dx}_PreProcess.pc  >/dev/null 2>&1


            sCode1="if( "


            for transCode in ${succTransCode[*]}
            do
                    c=`echo "strcmp( pTransInfo->wwxtjym, \"$transCode\") ==0 || " `


                    sCode1=$sCode1$c
            done
            sCode1=$sCode1"){SetDictTagString(\"Pub_RspDictTag\", \"_PubRspFlag\", \"TEST\");INFO(\"测试成功超时\");}"
            sCode1=`echo $sCode1 | sed "s/|| )/)/g"`


            line=`grep -n App_AftProcess ${xtmc_dx}_PreProcess.pc | grep int | awk -F ":" '{print $1}'`
            line=$((line+1))
           
            sed "${line}s/{/{$sCode1/" ${xtmc_dx}_PreProcess.pc > tmp.txt
            mv tmp.txt ${xtmc_dx}_PreProcess.pc
    fi
    }


    #设置失败超时
    setFailTransOvertime(){
    funName=`find ~/bafe/etc/APP -name bafe_$xtmc.conf | xargs grep "$failTransCode=" | awk -F "=" '{print $2}'| sed "s/
    //g" `


    line1=`grep -n $funName *.pc | awk -F ":" '{print $2}'`
    line1=$((line1+1))

    pcName=`grep -n "$funName" *.pc | awk -F ":" '{print $1}'`

    sCode="SetDictTagString(\"Pub_RspDictTag\", \"_PubRspFlag\", \"TEST\");INFO(\"测试失败超时\"); return 0;"
    sCode=`echo $sCode`

    sed "${line1}s/{/{$sCode/" $pcName > tmp1.txt
    mv tmp1.txt $pcName
    }


    #恢复超时设置
    setTransNormal(){
    grep TEST *.pc | awk -F ":" '{print $1}'  | xargs rm
    svn up >/dev/null 2>&1
    #make && ftp_so.sh libBafe_App_${xtmc_dx}.so
    }


    #打印日志
    logEcho(){
    echo $1 | tee -a createTest$date1.log
    }


    clear
    echo "===========================================================\n\n\n"
    echo "           功能:                                          "
    echo "                 1:设置成功超时                           "
    echo "                 2:设置失败超时                           "
    echo "                 3:全部恢复正常                           "
    echo "                 q:退出                                   \n\n\n"
    echo "===========================================================\n\n\n"


    while [ 1 ]
    do


    echo "\t请输入需要设置的选项值:\c"
    read option


    echo "-----------------------------------------------------------"


    case $option in
    "1")
    echo "\t请输入需要设置【成功超时】的交易码,输入q退出:"


    i=1
    while [ 1 ]
    do
            echo "\t"$i":\c"
            read cc1


            if [ "$cc1" == "q" ]
            then
                    break
            fi


            succTransCode[i]=$cc1


            i=$((i+1))
    done


    #进行操作:设置成功超时
    setSuccTransOvertime
    ;;
    "2")
    echo "\t请输入需要设置【失败超时】的交易码,输入q退出:"


    i=1
    while [ 1 ]
    do
            echo "\t"$i":\c"
            read dd1


            if [ "$dd1" == "q" ]
            then
                    break
            fi


            failTransCode=$dd1


            setFailTransOvertime
            i=$((i+1))


    done
    ;;
    "3")
    echo "\t全部恢复正常"
    setTransNormal
    ;;
    "q")
    echo "\t退出"
    break
    ;;
    *) echo "\tonly accept 1、2、3、q"
    esac


    echo "-----------------------------------------------------------\n\n"
    done


    echo "\t设置完成,正在生效,请稍等..."


    ftp_so1()
    {
    ftp -in 10.20.144.32 >/dev/null 2>&1 <<!
    user bafe ddd32
    bin
    put libBafe_App_${xtmc_dx}.so
    bye
    !


    /usr/bin/expect >/dev/null 2>&1 <<!
    spawn ssh bafe@10.20.144.32
    expect {
    "yes/no" { send "yes\r" }
    "password:" {send "ddd32\r"}
    }
    expect "password:" {send "ddd32\r"}
    expect "$]" { send "mv libBafe_App_${xtmc_dx}.so ~\/lib\/\.\r " }
    send "exit\r"
    expect eof
    !
    echo "\tBAFE环境:10.20.144.32 已经生效!"


    ftp -in 10.20.144.33 >/dev/null 2>&1  <<!
    user bafe ddd33
    bin
    put libBafe_App_${xtmc_dx}.so
    bye
    !


    /usr/bin/expect >/dev/null 2>&1  <<!
    spawn ssh bafe@10.20.144.33
    expect {
    "yes/no" { send "yes\r" }
    "password:" {send "ddd33\r"}
    }
    expect "password:" {send "ddd33\r"}
    expect "$]" { send "mv libBafe_App_${xtmc_dx}.so ~\/lib\/\.\r " }
    send "exit\r"
    expect eof
    !
    echo "\tBAFE环境:10.20.144.33 已经生效!"


    }




    #make clean >/dev/null 2>&1 ; make >/dev/null 2>&1 ; make uninstall >/dev/null 2>&1 ;  make install >/dev/null 2>&1 
    make >/dev/null 2>&1 ; make uninstall >/dev/null 2>&1 ;  make install >/dev/null 2>&1 


    ftp_so1


    echo "\n\n"
    echo ">>>>>>>>>>>>>>>>生效完成!!<<<<<<<<<<<<<<<<"
    echo "\n\n"



    展开全文
  • 交易超时后,事务内的查询语句将失效,也就是说一旦发生交易超时,即使是事务内的SQL查询语句也会被阻塞,不能再获得返回结果。 所以不要希望有交易超时后,在事务回滚之前,找到还没有回滚的数据,利用这些数据...

    交易超时后,事务内的查询语句将失效,也就是说一旦发生交易超时,即使是事务内的SQL查询语句也会被阻塞,不能再获得返回结果。

    所以不要希望有交易超时后,在事务回滚之前,找到还没有回滚的数据,利用这些数据进行抹帐操作。

    正确的做法是,交易超时前,存储变量到交易上下文环境中,当交易超时时,利用保存的流水号来进行抹帐操作。

    不正确的流程:

    ①系统A交易开始-》②发送记帐报文到B系统-》③B系统正确返回报文(有识别ID,如流水号)-》④系统A保存识别ID到数据表->⑤系统A进行后续处理,事务交易超时-》⑥在表中根据交易流水号查询识别ID->⑦利用识别ID,发送抹帐报文到系统B

    该流程将在第⑥步失败,而无法继续下去,查询识别ID时抛出异常而使后续处理失败。


    正确的工作流程:

    ①系统A交易开始-》②发送记帐报文到B系统-》③B系统正确返回报文(有识别ID,如流水号)-》④系统A保存识别ID到交易上下文->⑤系统A进行后续处理,事务交易超时-》⑥利用识别ID,发送抹帐报文到系统B


    上述流程经过实际验证,能较好的解决涉及两个系统的交易事务问题,避免单边帐的产生。



    展开全文
  • orderInfo += "&it_b_pay=\"30m\""这段代码替换为如下代码后,设置交易超时成功。 { String dateFormat = "yyyy-MM-dd HH:mm:ss"; Calendar cal = Calendar.getInstance(); cal.setTimeInMillis(System...

    参考文档:微信支付统一下单-  https://pay.weixin.qq.com/wiki/doc/api/app/app.php?chapter=9_1

    微信支付:在genProductArgs方法里添加

    packageParams.add(new BasicNameValuePair("time_expire", time_expire));

    后微信支付无法启动

    DDMS 日志的话会看到orion 字段日志显示请求返回签名错误。

     
    
    查看文档后

    https://pay.weixin.qq.com/wiki/doc/api/jsapi.php?chapter=4_3

    会看到很重要的一句话

    第一步:对参数按照key=value的格式,并按照参数名ASCII字典序排序如下: 


    我使用的微信官方demo是2015年的版本。查看里面源代码,我发现genPackageSign这段代码没有对Key Value经过排序。

    /**
         * 生成签名
         */
    
        private String genPackageSign(List<NameValuePair> params) {
            StringBuilder sb = new StringBuilder();
            for (int i = 0; i < params.size(); i++) {
                    sb.append(params.get(i).getName());
                    sb.append('=');
                    sb.append(params.get(i).getValue());
                    sb.append('&');
            }
            sb.append("key=");
            sb.append(Constants.API_KEY);
            String packageSign = MD5.getMessageDigest(sb.toString().getBytes())
                    .toUpperCase();
            Log.e("orion", packageSign);
            return packageSign;
        }

    然后

    packageParams.add(new BasicNameValuePair("time_expire", time_expire));

       String dateFormat = "yyyyMMddHHmmss";
                Calendar cal = Calendar.getInstance();
                cal.setTimeInMillis(System.currentTimeMillis());
                /**设置30分钟后超时*/
                cal.set(Calendar.MINUTE, cal.get(Calendar.MINUTE) + 30);
                Date dateinvalid = cal.getTime();
                String time_expire = new SimpleDateFormat(dateFormat).format(dateinvalid);
                packageParams.add(new BasicNameValuePair("time_expire", time_expire));
                Log.d("date", "date->" + time_expire);



    解决方案:genPackageSign里添加入一段kevalue值排序,不再出现签名错误

     /**
         * 生成签名
         */
    
        private String genPackageSign(List<NameValuePair> params) {
            StringBuilder sb = new StringBuilder();
            Collections.sort(params, new Comparator<NameValuePair>() {
                @Override
                public int compare(NameValuePair lhs, NameValuePair rhs) {
                    String key1 = lhs.getName();
                    String key2 = rhs.getName();
                    return key1.compareTo(key2);
                }
            });
            for (int i = 0; i < params.size(); i++) {
                    sb.append(params.get(i).getName());
                    sb.append('=');
                    sb.append(params.get(i).getValue());
                    sb.append('&');
            }
            sb.append("key=");
            sb.append(Constants.API_KEY);
            String packageSign = MD5.getMessageDigest(sb.toString().getBytes())
                    .toUpperCase();
            Log.e("orion", packageSign);
            return packageSign;
        }



    阿里支付 官方文档上说设置it_b_pay。经过测试

    orderInfo += "&it_b_pay=\"30m\""
    这段代码经过测试无效。(官方文档上说要开通超时功能,这个我没确定)
    
    
    查看官方文档后,it_b_pay还支持“2016-04-05 11:00:00” 这种格式
    orderInfo += "&it_b_pay=\"30m\""这段代码替换为如下代码后,设置交易超时成功。
                   {
    			String dateFormat = "yyyy-MM-dd HH:mm:ss";
    			Calendar cal = Calendar.getInstance();
    			cal.setTimeInMillis(System.currentTimeMillis());
    			/**设置30分钟后超时*/
    			cal.set(Calendar.MINUTE, cal.get(Calendar.MINUTE) + 30);
    			Date dateinvalid = cal.getTime();
    			String time_expire = new SimpleDateFormat(dateFormat).format(dateinvalid);
    			orderInfo += "&it_b_pay=\""+time_expire+"\"";
    			Log.d("date","date->"+time_expire);
    		}



    展开全文
  • 在大于10并发,xx交易开始大量报交易超时,持续压测,无法正常交易。 分析: 先查看网络问题,从前置ping加密机,经过2个路由,发现部分响应数据时间比较长,如图: 最后确认为加密机不是在同一网段内,网络...

    问题:

    在大于10并发,xx交易开始大量报交易超时,持续压测,无法正常交易。

    分析:

    先查看网络问题,从前置ping加密机,经过2个路由,发现部分响应数据时间比较长,如图:

    最后确认为加密机不是在同一网段内,网络连接方面出现延时现象导致交易超时失败,将加密机切换到同一网段后,正常。


    B/S端、app端、或其他终端的此类现在问题分析及总结:

    1.先确定压力机的负载情况,是不是本地压力机出现性能瓶颈

    2.本地网络资源情况,是不是存在本地带宽问题

    3.前端性能分析,yslow,fidder等工具对前端加载性能进行分析

    4.linux应用服务器和数据库服务器资源分析网络分析等,查看是否是服务器端资源瓶颈

    5.数据库本身性能分析,包含数据库配置文件,sql语句性能,死锁,业务层面,架构等

    6.代码监控分析,jprofiler工具,MAT等工具都不错,内存泄露溢出,垃圾回收时间等都会造成程序崩溃或反映慢等情况

    ......





    展开全文
  • 关于interatcive_timeout、wait_timeout超时参数,在特别重要的高并发交易系统应该通盘考虑超时参数时间,比如设置为72小时。特别建议应用连接池设置好保活机制。
  • 问题描述:Governor中针对每个操作设置“访问超时时间”与Endpoint中设置超时时间有什么区别?是否有内在关系,譬如谁不能大于谁? 解决办法: 针对每个操作设置“访问超时时间”是配置拦截器使用的,拦截器不...
  • 今天一整天都是在跟第三方支付接口打交道,主要是之前的开发人员接入这两套接口的时候没有设置二维码的有效期,而调用第三方接口支付支付成功后,通常都会有一个回调函数,我们可以添加自己网站的业务操作,比如添加...
  • 只能通过发心跳包来检测,而显然我们的nginx是没有发心跳包的,所以,包括nginx,php-fpm都是不知道客户端已断开,而且web服务器也都没做这种中断机制,所以服务器依然会把客户端的请求走完,或者遇到某个超时设置才...
  • m-分钟,h-小时,d-天,1c-当天(1c-当天的情况下,无论交易何时创建,都在0点关闭)。 该参数数值不接受小数点, 如 1.5h,可转换为 90m private $timeExpress; //时间 $time_express = trim('15m'...
  • Server.scrīptTimeout,默认值是90秒.要增大它,在你的asp文件中加一句,如下:Server.scrīptTimeout=999,将页面超时设为999秒. 最初我只设置Server.scrīptTimeou...
  • /** * 监听我们的死信队列(用户秒杀成功后超时未支付-监听者) */ @RabbitListener(queues = "mayikt_order_dlx_queue") public void orderConsumer(String orderId) { System.out.println("死信队列获取消息:" + ...
  • 支付订单超时处理

    千次阅读 2020-03-22 16:41:47
    业务场景: 一般电商下单流程中为了释放库存会针对用户下单做超时订单交易关闭的处理,这里一般都是15分钟,30分钟等。 使用队列ActiveMQ处理超时订单 ...支付宝设置绝对超时时间,设置一个时间点,如果拉...
  • 设置连接超时和读取超时方法: 1 2 3 4 RequestConfig config=RequestConfig.custom() .setConnectTimeout(10000)// 设置连接超时时间 10秒钟 .setSocketTimeout(1000...
  • 设置超时 HTTP请求:进行客户端与服务端之间的消息传递时使用 爬虫 网络爬虫又称网络蜘蛛、网络蚂蚁、网络机器人等,可以自动化浏览网络中的信息,当然浏览信息的时候需要按照我们制定的规则进行,这些规则称之为...
  • 连接游戏服务器超时怎么解决 内容精选换一换本章节主要描述Redis连接过程出现的问题,以及解决方法。当您发现与Redis实例连接出现异常时,可以根据本文的内容,从以下几个方面进行排查。Redis和ECS之间的连接问题...
  • 订单设置超过30分钟取消订单,虽然写了定时任务,但是如果用户拉取支付成功后,停留在支付页面的时间过长,超过了30分钟。此时继续支付的话,可以支付成功,但是因为订单状态已取消,回调失败。 为了保持支付订单与...
  • 读取超时问题记录

    2019-09-20 02:41:43
    之前我们有一个业务在负载大的情况下超时多,领导下令消灭超时交易。义不容辞干吧。 问题描述 我们这个业务输出形式类似芝麻评分,部署架构是 接入层-》业务逻辑-》评分服务层。每个层对应一个物理进程。真正计算...
  • 大多数的B2C商城项目都会有限时活动,当用户下单后都会有支付超时时间,当订单超时后订单的状态就会自动变成已取消 ,这个功能的实现有很多种方法,本文的实现方法适合大多数比较小的商城使用。具体实现方式可以跟随...
  • ConnectException : 指的是服务器请求超时 SocketTimeoutException:指的是服务器响应超时 可以在代码里设置 //请求超时 httpclient.getParams().setIntParameter(CoreConnectionPNames.CONNECTION_TIMEOUT,...
  • 这块儿就是通过订单生成的时间来判断什么时候超时,(如果是前端来存储时间,设置20分钟超时,每次加载到那个页面都从20分钟开始倒计时这种效果不太理想,可以把当前时间或时间戳传给后端存储,在后续使用) 代码很简单,...
  • 实体框架超时

    2020-07-11 14:04:46
    显然在连接字符串中设置超时设置对它没有影响。 #1楼 参考:https://stackoom.com/question/Q9OL/实体框架超时 #2楼 If you are using a DbContext, use the following constructor to set the command timeout: ...
  • 调用第三方超时处理

    千次阅读 2017-03-29 14:33:00
     1、第一次请求第三方,出现第三方超时异常。设置重复请求为三次。  2、首先用原先的订单号,查询订单交易结果。  3、交易成功,返回交易成功。  4、交易失败,返回交易失败。  5、未存在该交易,则进行...
  • 本篇博文是“Java秒杀系统实战系列文章”的第十一篇,本篇博文我们将借助定时任务调度组件来辅助“失效超时未支付的订单记录”的处理,用以解决上篇博文中采用“RabbitMQ死信队列失效处理超时未支付的订单”的瑕疵!...
  • tuxedo 超时控制

    千次阅读 2009-11-05 16:15:00
    Tuxedo 超时控制(转贴)原帖发于DEV2DEV,现转贴在此。 TUXEDO超时控制全功略摘要: 本《功略》集中了TUXEDO应用中,可能涉及到的所有时间参数,并分别对其进
  • Nginx 域名解析超时

    2020-04-13 16:34:52
    发现公司的ip变化了,通过nginx代理的服务报超时错误,总是报找不到后端连接地址。如果没有通过nginx,而是直接通过域名访问是没有问题的。查看了下日志,发现nginx日志里面的域名解析还是解析到原来绑定的ip地址,...
  • 在开发中,很多故障都是没有设置超时时间导致的,可能会导致请求慢,连锁反映,甚至是雪崩。 超时与重试可分为以下几个方面: 代理层超时与重试:入Haproxy,Nginx,Twemproxy,这些组件可实现代理功能,入...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 16,810
精华内容 6,724
关键字:

交易超时设置