六.问题总结
1.eclipse运行程序连接不到数据库问题
原因:修改了Tomcat解压包内的context.xml文件
解决办法:修改eclipse项目目录的Servers下的Tomcat下的tongtext文件,在<Context></Context>标签内添加以下内容:
<WatchedResource>WEB-INF/web.xml</WatchedResource>
<WatchedResource>${catalina.base}/conf/web.xml</WatchedResource><Resource auth="Container" driverClassName="com.mysql.jdbc.Driver" maxActive="20" maxIdle="10" maxWait="3000" name="jdbc/test" password="password" type="javax.sql.DataSource" url="jdbc:mysql://localhost:3306/test?useSSL=false" username="root"/>
说明:其中test表示数据库的名称,使用时需替换成自己的数据库名称
2.Js页面调研定时函数的调用和停止调用
解决办法:
定义全局变量 var inner;
调用setInterval并将其赋值给inner,inner=setInterval(”functionName”,time);
停止调用定时函数 window.clearInterval(inner);
3.Js页面打印json的value值显示Object
原因:value的值也是一个json,将它识别成为Object类型
解决方法:使用JSON.stringify()方法,即JSON.stringify(需要打印的值)
4.第一次运行程序时,读取结果文件时报错,提示找不到文件
原因:结果文件通过时间戳每天每个case创建一个,jmeter执行命令后结果文件未创建完成就开始读取文件了
解决方法:先创建一个结果文件,再去执行jmeter命令,保证结果文件一定存在
ile resultFile = new File("result.csv");
if(!resultFile.exists()){
resultFile.createNewFile();
}
补充说明:梳理逻辑时觉得所有的文件都存放在一个文件夹内比较不清晰,所有逻辑更改为给每个服务创建一个文件夹,文件夹下每天创建一个文件夹
File caseResultPathFile=new File(caseResultPath+lineName+"/"+caseDate+"/");
if(!caseResultPathFile.exists()){
caseResultPathFile.mkdirs();
}
5.给多个用户发送邮件
配置接收者邮箱地址定义为String类型,只能使用下面的命令设置一个邮箱进行邮件发送
message.setRecipient(Message.RecipientType.TO,new InternetAddress(info.getToAddress()));
解决方法:
将邮箱接受定义为String数组,通过遍历数组的方法,将所有接收者邮箱添加到邮件消息中
for (int i = 0; i < info.getToAddress().length; i++) {
InternetAddress toAddr = new InternetAddress(info.getToAddress()[i]);
message.addRecipient(javax.mail.Message.RecipientType.TO,toAddr);
}
6.启动多个服务多个接口时程序会运行过慢
解决办法:修改代码逻辑,原有逻辑为do-while一直会循环读取结果文件会导致程序过慢;现改为读取三次结果。
此时,若未读取到将错误结果输出
之后又发现报错信息:/Users/xxxx/Documents/TEST/apache-jmeter-2.13/bin/jmeter": error=23, Too many open files in system
原因:运行过多的jmeter,多个jmeter呈现打开状态
解决办法:
本机:修改本机的最大文件打开数
(1) 查看本机单个进程最大文件打开数:ulimit -n
(2) 修改本机单个进程最大文件打开数:ulimit -n 4096(临时)
Jmeter :文本编辑模式打开jmeter执行文件 bin/jmeter,将HEAP改为以下:
HEAP="-Xms2048m -Xmx2048m"
7.启动多个服务多个接口时,发送报警邮件会报错
com.sun.mail.util.MailConnectException: Couldn't connect to host, port: smtp.263.net, 25; timeout -1;
原因:发送多个邮件时有时会链接不上服务器
解决办法一:增加1次断线重连,并等待1s,catchException计数
while(testerExceCount<2) {
try {
TimeUnit.SECONDS.sleep(1);
SendJavaHtmlEmail.sendHtmlMail(infoTester);
testerExceCount=2;
} catch (Exception e) {
testerExceCount++;
if(testerExceCount==2) {
System.out.print("给Tester发送的'"+title+"'的邮件发送失败!,邮件服务无法链接");
e.printStackTrace();
}
}
}
解决办法二:发现原有群发使用方法错误,使用message.setRecipient,循环发送单个用户,现使用message.setRecipients群发
message.setRecipients(Message.RecipientType.TO,new InternetAddress().parse(info.getToAddress()));