• 学习常见问题汇总


    1.关于jdk版本使用

     生产环境(客户环境),jdk必须64位。 因为32位内存最高支持4g

    2.生产环境和开发环境eclipse  出现内存溢出 PermGen space 

       tomcat 默认内存分配不足导致的,修改tomcat目录下bin/catalina.bat/sh文件,添加参数如下( 8g内存 推荐配置参数):

       windows系统配置:

       set JAVA_OPTS=-server -Xms2048m -Xmx6000m -XX:MaxNewSize=512m -XX:MaxPermSize=512m 

       linux系统,注意“”必须要有,否则不起作用。

      set JAVA_OPTS="-Xms2048m -Xmx6000m -Xss1024K -XX:MaxNewSize=512m -XX:MaxPermSize=512m" 

     

    3.多线程开启

    可以提高并发数量,例如考试系统等。实测400多个考试,单节点tomcat没问题。

    修改修改tomcat目录下conf/server.xml  文件,开启Executor节点,修改Connector节点。

    <Executor name="tomcatThreadPool" namePrefix="catalina-exec-"
    maxThreads="1000" minSpareThreads="4"/>
    <Connector port="8080" protocol="HTTP/1.1"
    connectionTimeout="20000"
    maxThreads="600"
    minSpareThreads="100"
    maxSpareThreads="500"
    acceptCount="700"
    redirectPort="8443" URIEncoding="UTF-8"/>

    5.日志log4j的输出降级处理 。

     否则性能很低。生产环境(客户环境)一定关掉

     程序目录 web-inf/classes/log4j/log4j.properties参数修改如下:

     log4j.rootLogger=ERROR

    6.特殊字符过滤

      由于目前tomcat的版本的不断更新升级,安全性不断增强,有些特殊字符可能会被拦截。

      版本7.0.85存在,7.0.47不存在。

      conf/catalina.properties文件中参数:

      tomcat.util.http.parser.HttpParser.requestTargetAllow=|{}<>

      最终解决方案还是代码的优化的处理。

    6.tomcat 安全版本 

       7.0.85 我们使用的是。

       Tomcat漏洞说明与安全加固 http://www.cnblogs.com/milantgh/p/3660106.html

    7.关于应用程序日志的查找

       应用程序安装目录文件下logs文件夹中。例如zcgl/logs。

       注意:tomcat启动日志在tomcat安装目录logs文件夹中。

    8.tocmat的启动闪退。

     大多数原因为jdk环境变量有问题,可以在start.bat/sh,文件中最后一行,添加参数pause;(暂停),进行调试。并查看原因

    9.oracle版本选用

    建议11g,1.10g很多高危安全性补丁已经添加 2.我们开发环境为11g进行的,尽量进行11g安装。

    之前实测:对于遍历循环语句,10g相当慢。

    10.eclipse卡,可以关闭validation
          原因:项目功能多,js文件也比较多,所以eclipse校验js文件有时会导致cpu爆满
          解决:关闭eclipse的validation -->  打开下面截图,按照步骤点击Disable All,保存。
             TIM图片20180520223309.png 

       eclipse加速之禁用JS、jsp等文件的语法验证:    https://blog.csdn.net/testcs_dn/article/details/39058959
       汇总解决方案: https://blog.csdn.net/zhuchunyan_aijia/article/details/50499198

    10.Oracle查看正在执行的sql

      1、查询Oracle正在执行的sql语句及执行该语句的用户

    SELECT b.sid oracleID,  
           b.username Oracle用户,  
           b.serial#,  
           spid 操作系统ID,  
           paddr,  
           sql_text 正在执行的SQL,  
           b.machine 计算机名  
    FROM v$process a, v$session b, v$sqlarea c  
    WHERE a.addr = b.paddr  
       AND b.sql_hash_value = c.hash_value;

        2、查看正在执行sql的发起者的发放程序

    SELECT A.serial#,OSUSER 电脑登录身份,
           PROGRAM 发起请求的程序,  
           USERNAME 登录系统的用户名,  
           SCHEMANAME,  
           B.Cpu_Time 花费cpu的时间,  
           STATUS,  
           B.SQL_TEXT 执行的sql  
    FROM V$SESSION A  
    LEFT JOIN V$SQL B ON A.SQL_ADDRESS = B.ADDRESS  
                       AND A.SQL_HASH_VALUE = B.HASH_VALUE  
    ORDER BY b.cpu_time DESC

     

      

  • 相关阅读:
    Linux C下的正则表达式
    中英文i18 vue参数传递
    es map的用法
    webpack中publicPath问题
    prop中如何获取vue data中的数据 中英文方案
    利用map reduce方法将对象转成数组
    WPF 踩坑笔记2
    WPF 踩坑笔记1
    RabbitMQ 高阶用法 之 x-expire 过期时间设置
    JANUSEC应用网关1.0发布,提供一站式安全交付能力
  • 原文地址:https://www.cnblogs.com/itcui/p/10086687.html
Copyright © 2020-2023  润新知