0%

防火墙

iptables 是建立在 netfilter 架构基础上的一个包过滤管理工具。
用户通过 /sbin/iptables 命令来管理 iptables,和 route 命令相同,iptables 命令的效果在重新启动以后就不再有效。

可以使用 /etc/rc.d/init.d/iptables save 将当前 iptables 规则写到 /etc/sysconfig/iptables 文件中,那么每次开机时/etc/rc.d/init.d/iptables start 命令会使 /etc/sysconfig/iptables 中的规则生效

iptables构成

iptables 是由几张表所组成,每张表又由几条链组成,每张表负责不同的封包处理机制,每条链负责不同的封包走向,具体采取的策略由链里的规则设定

  • filter 表: 包含真正的防火墙过滤规则,用于过滤包
    • INPUT 链: 存在于 filter 表,主要用于处理进入本机的包
      • OUTPUT 链: 存在于 filter 表,主要用于处理离开本机的包
      • FORWARD 链: 存在于 fileter 表,主要用于处理穿过本机的包
  • Nat 表 : 包含源和目的地址及端口转换使用的规则,用于做地址转换
    • PREROUTING 链: 存在于 nat 表,主要用于在包刚刚到达防火墙时改变目的地址(DNAT)
    • POSTROUTING 链: 存在于 nat 表,主要用于在包就要离开防火墙之前修改来源地址(SNAT)
    • OUTPUT链:存在于nat表,主要用于改变本地产生的包的目的地址
  • mangle 表: 允许改变包的内容来进一步矫正包,主要用于给数据包打标记,这些标记会被filter表中的规则检查
阅读全文 »

性能优化的步骤

一、发现问题(性能监控)

可能存在的问题:GC频繁、cpu load过高、OOM、内存泄漏、死锁、程序响应时间过长

二、排查问题(性能分析)

分析方式或工具

  • 打印GC日志,通过GCviewer或者http://gceasy.io来分析日志信息
  • 命令行工具,如jstack、jmap、jinfo等
  • dump出堆文件,使用内存分析工具分析文件
  • 使用阿里Arthas或jconsole、JVisualVM来实时查看JVM状态
  • jstack查看堆栈信息

三、解决问题(性能调优)

解决的大致方向如下

  • 适当增加内存,根据业务背景选择垃圾回收器
  • 优化代码,控制内存使用
  • 增加机器,分散节点压力
  • 合理设置线程池线程数量
  • 使用中间件提高程序效率,比如缓存,消息列队等

网卡设置

虚拟机每clone一次,网卡mac地址更新,centos自动新增一个eth网卡

1
2
3
4
5
6
7
# 删除网络设置
rm -f /etc/udev/rules.d/70-persistent-net.rules
#重启
reboot
#关闭服务NetworkManager
chkconfig NetworkManager off
service NetworkManager stop

修改eth0网卡信息 /etc/sysconfig/network-scripts/ifcfg-eth0

1
2
3
4
5
6
7
8
DEVICE=eth0 #网卡设备名称
ONBOOT=yes #启动时是否激活 yes|no
BOOTPROTO=static #协议类型 dhcp bootp none
IPADDR=192.168.134.136 #网络IP地址
NETMASK=255.255.255.0 #网络子网地址
GATEWAY= #网关地址
BROADCAST=192.168.134.255 #广播地址
TYPE=Ethernet #网卡类型为以太网

之后启动network服务

1
2
chkconfig network on
service network start

spring的扩展接口

spring提供了一些扩展接口来对spring进行定制化功能,可以选择如下一些扩展点:

BeanFactoryPostProcessor

beanFactory后置处理器,存在于容器启动阶段,支持在bean factory标准初始化完成后,对bean factory进行一些额外处理。这时所有的BeanDefinition已经加载完毕,但是还没有进行bean初始化此时可以对bean的定义元信息(BeanDefinition)进行修改,但是不能对bean的实例进行修改,如PropertyPlaceholderConfigurer,就是在这个扩展点上对bean属性中的占位符进行替换

1
2
3
4
5
6
public interface BeanFactoryPostProcessor {


void postProcessBeanFactory(ConfigurableListableBeanFactory beanFactory) throws BeansException;

}
阅读全文 »

字节码指令

字节码指令由一个操作码(一个字节长度、代表着特殊含义的数字)以及操作码之后有零个至多个代表此操作所需参数构成

分为九类指令

  • 加载与存储指令
  • 算术指令
  • 类型转换指令
  • 对象的创建与访问指令
  • 方法调用与返回指令
  • 操作数栈管理指令
  • 比较控制指令
  • 异常处理指令
  • 同步控制指令
阅读全文 »