class LogWriter implements Runnable {
Socket client;
private static ThreadLocal<Date> date = new ThreadLocal<Date>() {
@Override
protected Date initialValue() {
return new Date();
};
};
private static ThreadLocal<SimpleDateFormat> formatter = new ThreadLocal<SimpleDateFormat>() {
@Override
protected SimpleDateFormat initialValue() {
return new SimpleDateFormat("yyyy_MM_dd");
};
};
public LogWriter(Socket client) {
this.client = client;
}
public void run() {
try {
write(this.client.getInputStream(), new File(
CentralizedLogging.logsDir + File.separator
+ client.getInetAddress().getHostName() + "_"
+ getFormattedDate() + ".log"));
this.client.close();
} catch (Exception e) {
try {
e.printStackTrace();
write(new ByteArrayInputStream(e.getMessage().getBytes()),
new File(CentralizedLogging.logsDir + File.separator
+ "centralLoggingError.log"));
} catch (IOException io) {
}
}
}
public synchronized void write(InputStream in, File file)
throws IOException {
RandomAccessFile writer = new RandomAccessFile(file, "rw");
writer.seek(file.length()); // append the file content into existing if it not exist creating a new one.
writer.write(read(in));
writer.close();
}
public static byte[] read(InputStream in) throws IOException {
ByteArrayOutputStream out = new ByteArrayOutputStream();
int read = -1;
byte[] buffer = new byte[1024];
read = in.read(buffer);
do {
out.write(buffer, 0, read);
} while((read = in.read(buffer)) > -1);
return out.toByteArray();
}
主方法
public static void main(String[] args) throws InterruptedException,
IOException {
// CentralizedLogging centralLogServer = new CentralizedLogging(args[0],Integer.parseInt(args[1]));
// new Thread(centralLogServer).start();
long start = System.currentTimeMillis() + 1000 * 20 * 60;
while(start >= System.currentTimeMillis()) {
Socket client = new Socket("bharathi-1397", 10000);
OutputStream os = client.getOutputStream();
DataOutputStream outToServer = new DataOutputStream(os);
outToServer
.write("Centralized Logging is working......".getBytes());
client.close();
}
}
我已经正确关闭了连接,但是time_wait连接数量正在增加。我从我的终端中拍摄了一个快照,我贴出了其中的一部分。我是否遗漏了什么?
tcp6 0 0 127.0.0.1:46146 127.0.0.1:10000 TIME_WAIT -
tcp6 0 0 127.0.0.1:57645 127.0.0.1:10000 TIME_WAIT -
tcp6 0 0 127.0.0.1:47961 127.0.0.1:10000 TIME_WAIT -
tcp6 0 0 127.0.0.1:56716 127.0.0.1:10000 TIME_WAIT -
tcp6 0 0 127.0.0.1:49469 127.0.0.1:10000 TIME_WAIT -
tcp6 0 0 127.0.0.1:54078 127.0.0.1:10000 TIME_WAIT -
tcp6 0 0 127.0.0.1:51626 127.0.0.1:10000 TIME_WAIT -
tcp6 0 0 127.0.0.1:50143 127.0.0.1:10000 TIME_WAIT -
tcp6 0 0 127.0.0.1:59214 127.0.0.1:10000 TIME_WAIT -
tcp6 0 0 127.0.0.1:54192 127.0.0.1:10000 TIME_WAIT -
tcp6 0 0 127.0.0.1:53436 127.0.0.1:10000 TIME_WAIT -
tcp6 0 0 127.0.0.1:54547 127.0.0.1:10000 TIME_WAIT -
tcp6 0 0 127.0.0.1:55032 127.0.0.1:10000 TIME_WAIT -
tcp6 0 0 127.0.0.1:51273 127.0.0.1:10000 TIME_WAIT -
tcp6 0 0 127.0.0.1:48381 127.0.0.1:10000 TIME_WAIT -
tcp6 0 0 127.0.0.1:47532 127.0.0.1:10000 TIME_WAIT -
tcp6 0 0 127.0.0.1:56811 127.0.0.1:10000 TIME_WAIT -
tcp6 0 0 127.0.0.1:55293 127.0.0.1:10000 TIME_WAIT -
tcp6 0 0 127.0.0.1:56664 127.0.0.1:10000 TIME_WAIT -
tcp6 0 0 127.0.0.1:49242 127.0.0.1:10000 TIME_WAIT -
tcp6 0 0 127.0.0.1:51225 127.0.0.1:10000 TIME_WAIT -
tcp6 0 0 127.0.0.1:59265 127.0.0.1:10000 TIME_WAIT -
tcp6 0 0 127.0.0.1:59378 127.0.0.1:10000 TIME_WAIT -
tcp6 0 0 127.0.0.1:47997 127.0.0.1:10000 TIME_WAIT -
tcp6 0 0 127.0.0.1:47955 127.0.0.1:10000 TIME_WAIT -
tcp6 0 0 127.0.0.1:59453 127.0.0.1:10000 TIME_WAIT -
tcp6 0 0 127.0.0.1:48092 127.0.0.1:10000 TIME_WAIT -
tcp6 0 0 127.0.0.1:52462 127.0.0.1:10000 TIME_WAIT -
tcp6 0 0 127.0.0.1:59579 127.0.0.1:10000 TIME_WAIT -
tcp6 0 0 127.0.0.1:54921 127.0.0.1:10000 TIME_WAIT -
tcp6 0 0 127.0.0.1:55675 127.0.0.1:10000 TIME_WAIT -
tcp6 0 0 127.0.0.1:51140 127.0.0.1:10000 TIME_WAIT -
tcp6 0 0 127.0.0.1:57321 127.0.0.1:10000 TIME_WAIT -
tcp6 0 0 127.0.0.1:51656 127.0.0.1:10000 TIME_WAIT -
tcp6 0 0 127.0.0.1:54740 127.0.0.1:10000 TIME_WAIT -
tcp6 0 0 127.0.0.1:53600 127.0.0.1:10000 TIME_WAIT -
tcp6 0 0 127.0.0.1:59862 127.0.0.1:10000 TIME_WAIT -
tcp6 0 0 127.0.0.1:54766 127.0.0.1:10000 TIME_WAIT -
tcp6 0 0 127.0.0.1:59062 127.0.0.1:10000 TIME_WAIT -
tcp6 0 0 127.0.0.1:55702 127.0.0.1:10000 TIME_WAIT -
tcp6 0 0 127.0.0.1:50942 127.0.0.1:10000 TIME_WAIT -
tcp6 0 0 127.0.0.1:53732 127.0.0.1:10000 TIME_WAIT -
tcp6 0 0 127.0.0.1:52757 127.0.0.1:10000 TIME_WAIT -
tcp6 0 0 127.0.0.1:56430 127.0.0.1:10000 TIME_WAIT -
tcp6 0 0 127.0.0.1:49179 127.0.0.1:10000 TIME_WAIT -
tcp6 0 0 127.0.0.1:48689 127.0.0.1:10000 TIME_WAIT -
tcp6 0 0 127.0.0.1:53313 127.0.0.1:10000 TIME_WAIT -
tcp6 0 0 127.0.0.1:51161 127.0.0.1:10000 TIME_WAIT -
tcp6 0 0 127.0.0.1:57033 127.0.0.1:10000 TIME_WAIT -
tcp6 0 0 127.0.0.1:58607 127.0.0.1:10000 TIME_WAIT -
这会对我的服务器造成任何问题吗?这是什么原因?