Arganzheng's Blog

stay hungry, stay foolish

ElasticSearch如何实现按天翻滚索引

最近在做集中式日志,将应用的日志保存到Elasticsearch中,结合kibana实现集中化日志监控和报警。在设计ES存储的时候。考虑到日志的特殊性,打算采用Daily Indices方式。名称为:log-${application}-YYYY.MM.DD。每天会自动创建一个新的索引,类似于log4j的DailyRollingFileAppender,一来减少活跃索引的大小,二来方便存档和...

Spring MVC的异常处理机制

Spring MVC在找到你的handler之后,会通过反射调用handler的方法: public class InvocableHandlerMethod extends HandlerMethod { /** * Invoke the handler method with the given argument values. */ private Object inv...

如何防止表单重复提交

因为安全扫描的问题,它会把线上真实的访问流量进行重放,而且重发时间间隔比较短,导致一个请求变成多次请求,也就是重复提交了。那么怎样解决这个问题呢? 一般来说是通过request token来防止重复提交的。具体实现机制是: 当客户端请求页面时,服务器会通过token标签生成一个随机token,并且将该token放置到全局session当中,然后将该随机数发向客户端;如果客户第一次提交,那...

配置tomcat的access_log

一般应用都是跑在nginx后面,nginx本身就有access_log了,不需要重复配置tomcat的access_log。不过在测试环境,可能是直接访问tomcat。特别是一些别有用心的程序,比如安全扫描程序。 今天就发现一个tomcat应用有很多莫名其妙的请求。看了一下nginx的access_log,没有发现请求日志,但是应用配置的log4j日志确实很多异常的请求日志。于是配置了一下...

分布式RPC框架如何进行服务寻址和分发

所谓分布式,就是一个服务可能分布在多个Server上。另外,一个Server往往有多个Service,而每个Service有多个方法(服务)。为了对业务透明,服务框架一般会屏蔽远程分布式调用的细节,让用户觉得这就是一个本地服务,也就是说客户端可能就是这样一个调用: String result = HelloService.sayHello(); 至于这个HelloService的say...

Quartz突然停止执行问题

现象 线上的API监控系统有一段时间没有发报警邮件了,觉得有点异常,测试同学特意写了一个抛出错误的python校验器,结果发现也是没有收到邮件。 原因 表面现象是没有收到报警邮件,那么有可能是: job没有执行 校验器没有错误:根据前面的验证,可以直接排除。 邮件没有发送 通过在job执行前后打日志,发现一个问题: 有些job只有start日志,没有end日志,也...

Java文件读取支持timeout

我们知道系统的IO操作一般分为阻塞IO和异步IO两种。对于Java来说,1.4之前的IO是Blocking IO,1.4引入的NIO其实也是,但是它有两个好处: select可以同时监听多个文件描述符,而这些文件描述符其中的任意一个进入读就绪状态,select()函数就可以返回。这也是它被称为IO复用的原因。 如果select返回的时候,调用相应的Blocking IO操作一般不会...

nginx日志自动按天分隔

log4j可以的DailyRollingFileAppender可以实现日志按天归档,避免日志过大。同时也方便按天查询统计日志。但是nginx没有实现这个功能,所有的日志都是一个文件死磕到底。像error_log还好,但是access_log一般都比较大,按天归档是很有必要的,怎样实现呢? 可以这样简单处理: 写一个脚本: nginx_log_split.sh #!/bin/bash ...

如何解决系统盘爆满问题

感谢 @邓译文 的 TIPS 1. 关闭休眠功能 在命令行中执行:@powercfg -h off,可以多出好几G的磁盘空间。 2. 将虚拟内存关闭或者转移到非系统盘 具体参见:虚拟内存设置。可以多出好几G的磁盘空间。 3. 删除本地邮件,并且转存到非系统盘 一般系统原装的outlook默认是安装在系统盘,邮件一多很容易爆满,可以在C:\Users\zhengzhibin\App...

JPA的事务管理器配置

Guanxing工程在后来为了避免写DAO,引入了JPA。为了避免影响老的工程,JPA使用了自己的事务管理器。 spring-service.xml <!-- 事务配置 --> <tx:advice id="txAdvice" transaction-manager="transactionManager"> <tx:attributes> &l...