学习常见问题汇总

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

 

  

原文地址:https://www.cnblogs.com/itcui/p/10086687.html