`
csd_ali
  • 浏览: 136772 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

http 502错误(多层循环引起的性能问题)

阅读更多

作者:黄小亮

 

现象描述:

页面查询速度非常慢, 直到报出502 错误(Bad gateway)

 

现象描述:

页面查询速度非常慢, 直到报出502 错误(Bad gateway)

错误分析

分析过程:

在项目做了压力测试后( 压力测试和功能是用的是一个数据库, 压力测试时产生了大量数据 ), 测试环境的查询变的很慢, 超过了mod_jk.conf 中配置的请求超时时间(JkWorkerProperty worker.localnode.socket_timeout=20, 请求转发给jboss 后,最长等待的时间 ). 页面报出了502 错误.

 

 

原因分析:

通过debug 观察到一次查询查出来的 parentNodeDOList childNodeDOList 各有近万条数据, 下面嵌套进行数据的组装, 消耗了比较多的时间. 代码片段如下:

( for ParentNod eDO parentNodeDO: parentNodeDOList ()) {

                    parentNodeDOId = parentNodeDO.getId();

                    for (ChildNodeDO childNodeDO : childNodeDOList ) {

                       if (childNodeDO.getParentNodeId().equals(parentNodeDOId)) {

                          parentNodeDO.getChildNodeDOList().add(childNodeDO);

                        }

                    }

}

 

正确用法

正确用法 ( 将上面代码中 parentNodeDOList 转换为 Map, 再进行组装 , N ²降为 N)

for (ChildNodeDO childNodeDO : childNodeDOList) {

ParentNod eDO    parentNod eDO

=  parentNod eMap .get(childNodeDO.getParentNodeDOId());

                parentNodeDO.getChildNodeDOList().add(childNodeDO);

        }

 

 

分享到:
评论

相关推荐

    javascript 使用for循环时该注意的问题-附问题总结

    例如,在IE浏览器中,自定义Array.prototype.indexOf方法时可能会引起问题,导致for-in循环枚举到了原型链上的属性,从而改变了循环变量的值。在这种情况下,应当使用标准的for循环或者Array的forEach方法等。 第三...

    Nand_Flash中的误码率

    - **去俘获引起的保留时间问题**:随着时间推移,俘获的电荷可能会逐渐消失,导致数据丢失。 #### 测量与计算方法 准确估算UBER需要细致的表征,以全面涵盖所有写入错误,这些错误往往具有高度的随机性,并需为...

    0.13um-shrink工艺的嵌入式闪存的耐久性特性研究_V2.0 字数.zip

    在P/E循环次数方面,0.13um工艺可能会导致更快的性能退化。每次编程和擦除操作都会引起闪存单元内部的物理变化,如氧化层的厚度减少和应力累积。更小的单元尺寸意味着这些物理效应更为显著,可能导致更早达到其设计...

    高速DSP系统PCB板的可靠性设计分析

    这些问题的产生不仅可能导致信号失真、定时错误,更严重的是可能会引起系统错误乃至系统崩溃,对系统性能造成致命影响。 在高速DSP系统PCB板设计中,电源设计占据着基础性地位。电源的稳定性直接关系到整个系统的...

    超级有影响力霸气的Java面试题大全文档

     GC是垃圾收集的意思(Gabage Collection),内存处理是编程人员容易出现问题的地方,忘记或者错误的内存回收会导致程序或系统的不稳定甚至崩溃,Java提供的GC功能可以自动监测对象是否超过作用域从而达到自动回收...

    design for life

    ### 设计电源寿命的关键因素...错误的选型或不当的应用可能会导致电源系统的性能下降甚至彻底失效。因此,在设计初期仔细考虑这些因素,可以显著提高电源系统的可靠性和使用寿命。接下来的文章将继续探讨更多相关主题。

    安全发展核电优化我国能源结构.docx

    历史上,如三哩岛、切尔诺贝利和福岛等核事故的发生,曾经引起人们对核电安全性的担忧。通过深入分析这些事故,我们发现它们多由于人为操作错误或者设计缺陷所导致。事故发生后,核电技术不断进行改进,安全性能得到...

    C C++高质量编程(林锐)

    - 循环语句是程序中常见的结构,应考虑循环的效率问题。 - 尽量减少循环体内的计算量,将不变的表达式移出循环体外。 **4.5 FOR语句的循环控制变量** - 在FOR循环中,循环控制变量的选择和使用直接影响到循环的效率...

    building_storage_networks_chsSAN存储区域网络 .rar

    SAN方案必须提供自管理能力,尤其在错误恢复、数据可用性以及性能管理方面,纠错和失败恢复也是企业存储的关键问题,RAID使存储管理员从由于硬盘失败而引起的数据丢失的担心中解脱出来。自动的负载平衡减轻了对存储...

    oracle实用教程

    这些问题通常是由于配置错误、权限不足等原因引起的。解决这些问题的方法包括检查导出/导入命令的语法、确保有足够的权限、验证数据的一致性等。 以上内容覆盖了Oracle实用教程中的主要知识点,旨在帮助初学者全面...

    javascript中eval解析JSON字符串

    label语句允许给代码中的某一点设置一个标签,通常与break或continue一起使用,以便于跳出多层嵌套的循环。由于eval可以执行任何代码,包括label语句,因此在使用eval时要特别小心,以避免不小心创建了label,从而...

    精品资料(2021-2022年收集)建筑预算员《通用知识与基础知识》考试题答案B卷.docx

    - 引气剂能够显著提高混凝土的**抗冻性**(选项C),这是因为引入的微小气泡能够缓解冻融循环造成的内部应力。 **16. 水泥检验批量** - 袋装水泥不超过**200吨**(选项C)为一个检验批,这是为了保证材料的质量一致...

    java 面试题 总结

     GC是垃圾收集的意思(Gabage Collection),内存处理是编程人员容易出现问题的地方,忘记或者错误的内存回收会导致程序或系统的不稳定甚至崩溃,Java提供的GC功能可以自动监测对象是否超过作用域从而达到自动回收...

Global site tag (gtag.js) - Google Analytics