linux相关命令

LINUX相关命令整理
1.find / -size +100M -exec ls -lh {} ;
2.rz -y 传单个文件的命令 需安装yum install lrzsz
3.[root@VM_0_12_centos kafka_2.11-1.0.0]# echo 111111 > /dev/null
4.[root@VM_0_12_centos kafka_2.11-1.0.0]# echo asadjasjdaal >/dev/null
5.Linux定位查询-----> cat -n redis.conf|grep daemonsize
6.定位到哪一行—>先进入 模式 set nu
7.删除所有包含gitlab的文件—> find / -name gitlab |xargs rm -rf
8. substr(cargo_code,length(cargo_code)-3,4) length=13截取cargo_code这个字段中从第10位 取4个
9.curl -o cccenchong www.9ku.com -o文件名 抓网页源码
10.free -m |grep Mem |awk ‘{print$2,$4}’
11.
12.free -m |grep Mem |wc -l 查看内存,统计行数

18:执行 /bin/bash -c 指定将命令转为一个完整命令执行

13.ps -ef | grep defcunt 清理僵尸进程
14.Besttrace 47.110.46.20

15.以centos7开放8080端口为例:
16.查看防火墙的状态:systemctl status firewalld.service
17.关闭防火墙: systemctl stop firewalld.service 关闭防火墙会导致服务器有一定风险,所以建议是单独开放服务端口 :
18.开放8080端口
19.firewall-cmd --zone=public --add-port=8080/tcp --permanent (–permanent永久生效,没有此参数重启后失效)
20.刷新规则
21.firewall-cmd --reload
22.查看指定端口
23.firewall-cmd --zone=public --query-port=8080/tcp
24.删除指定端口
25.firewall-cmd --zone=public --remove-port=8080/tcp --permanent
26.查看已开放得所有端口
27.firewall-cmd --list-ports

28.如果不想看到kibana的后台启动日志,使用命令: nohup ./kibana --allow-root &
就会忽略输入并把输出追加到nohup.out中去

/* 重启SSH服务 */

systemctl restart sshd

netstat -tunlp | grep ssh

grep “Failed password for invalid user” /var/log/secure | awk ‘{print $13}’ | sort | uniq -c | sort -nr | more

/* 修改防火墙ssh配置文件 */

vi /usr/lib/firewalld/services/ssh.xml

--->
  1. 第一步 top 可以查看出有问题的进程编号,top只能定位到进程,它定位不到进程中的哪个线程
    第二步 ps H -eo pid,tid,%cpu 此命令可以查看当前linux系统里面所有 进程id,线程id,cpu占用率,如果进程数太多则用 | grep pid进行筛选(用ps进一步定位哪一个线程占用cpu过高)
    第三部 jstack pid 把该进程中的所有java线程列出来,此处的线程编号是16进制的 (查看nid 需10进制转换成16进制)

sql语句的相关整理

  1. substr(cargo_code,length(cargo_code)-3,4) length=13截取cargo_code这个字段中从第10位 取4个
  2. 取出当前系统时间是星期几:select to_char(sysdate,’day’) from dual;
    周末:select to_char(sysdate,’day’) from dual in(‘星期六’,’星期日’)
  3. 取出当前系统的小时时间:select to_char(sysdate,’hh24’) from dual;(结果是个字符串)
    非工作时间:select to_number(to_char(sysdate,‘hh24’))from dual;(转换成整数)
    select to_number(to_char(sysdate,‘hh24’))from dual not between 9 and 18

Oracle语句的相关整理
Dblink:
create database link NC65DBLINK
connect to nc56 identified by nc56
using ‘(DESCRIPTION =(ADDRESS_LIST =(ADDRESS =(PROTOCOL = TCP)(HOST = 192.168.17.254)(PORT = 1521)))(CONNECT_DATA =(SERVICE_NAME = orcl)))’;

有用网址的相关整理

  1. http://www.dajiangtai.com/course/73.do

3.https://www.cnblogs.com/kevingrace/p/6398672.html memcached实现session共享博客

分布式环境下的相关资料整理
1.分布式环境下session丢失

redis加锁

  注意:1必须给锁设置一个失效时间,防止一个服务进行解锁后服务器当即,这样可以有效的避免死锁
        2,加锁的时候,每个节点产生随机的字符串
        3,设置失效的时间必须每个电脑里面相等
        set key value NX  PX  1000

ThreadLocal 线程间共享,一个线程中额每一个方法都能够访问到这个值,

rediTemplate里面不支持setNx
private JedisConnectionFactory jdeis

获取redis的原始链接:Jedis jedis = jedis.getConnection().getNativeConnetcion();

                      jedis.set(key,value,"NX","PX",1000)

4.分布式锁的解决方案
4.1 jvm锁解决不了分布式环境多任务对共享资源竞争的协同操作问题,
如果是在一个线程里面,用jvm锁是可以搞定的,如果是在分布式环境下的话,jvm就会解决不了了。
分布式锁的解决方案:
1.基于数据库,要求数据库支持行级锁
2.利用redis实现,基于redis setnx

3.利用zookeeper zk实现分布式锁厉害

lamba表达式相关资料整理

并发优化的相关笔记整理
1.maxThread=150 tomcat启动的时候会初始化 150个tomcat线程,放在线程池中,会从tomcat线程池中抽一个tomcat线程
–>即主线程main
提高web的吞吐量,方法使用的是springmvc异步请求机制

#多种服务器处理并发的机制
Apache服务器处理并发的机制是PMP
Mysql服务器处理并发的机制是多线程
memcached处理并发机制是Libevent

多线程相关资料整理
1.线程不安全的问题一般情况下都是由我们的类变量(在heap区)和静态变量(在方法去区(元空间))引起的。方法里面的变量(栈,线程私有的)。
2.lock和synchrozized的区别
3.lock必须zaifinally的原因是解决死锁问题

高并发场景下的限流策略
1.限流方式之一计数器(滑动窗口协议)
2.令牌桶限流算法

分布式系统下的限流

jvm的配置参数
新生代都是朝生夕灭的,所以直接采用复制算法
养老区的都是生命力强的 所以采用标记-清除算法 ,MaajorGC的耗时比较长,因为要扫描再回收,MajorGC会产生内存碎片,为了减少内存损耗,我们一般需要进行合并或者标记出来方便下次直接分配
#GC日志分析 -XX:+PrintGC或-verbose:gc

1: [GC (Allocation Failure) 32686K->1648K(123904K), 0.0007230 secs] 
2: [GC (Allocation Failure) 34034K->1600K(123904K), 0.0009652 secs] 
3: [GC (Allocation Failure) 33980K->1632K(123904K), 0.0005306 secs]
32686K表示回收前,对象占用空间。1648K表示回收后,对象占用空间。123904K表示还有多少空间可用。0.0007230 secs表示这次垃圾回收花的时间。

#打印GC的详细信息以及堆使用详细信息使用-XX:+PrintGCDetails
1: [GC (Allocation Failure) [PSYoungGen: 32686K->1656K(37888K)] 32686K->1664K(123904K), 0.0342788 secs] [Times: user=0.00 sys=0.00, real=0.03 secs]
2: [GC (Allocation Failure) [PSYoungGen: 34042K->1624K(70656K)] 34050K->1632K(156672K), 0.0013466 secs] [Times: user=0.00 sys=0.00, real=0.00 secs]
3: Heap
4: PSYoungGen total 70656K, used 43118K [0x00000000d6100000, 0x00000000dab00000, 0x0000000100000000)
5: eden space 65536K, 63% used [0x00000000d6100000,0x00000000d8985ac8,0x00000000da100000)
6:from space 5120K, 31% used [0x00000000da600000,0x00000000da796020,0x00000000dab00000)
7: to space 5120K, 0% used [0x00000000da100000,0x00000000da100000,0x00000000da600000)
8: ParOldGen total 86016K, used 8K [0x0000000082200000, 0x0000000087600000, 0x00000000d6100000)
9: objectspace 86016K, 0% used [0x0000000082200000,0x0000000082202000,0x0000000087600000) 10: Metaspace used 2669K, capacity 4486K, committed 4864K, reserved 1056768K 11: classspace used 288K, capacity 386K, committed 512K, reserved 1048576K

我们看到除了打印GC信息之外,还显示了堆使用情况,堆分为新生代、老年代、元空间。注意这里没有永久区了,永久区在java8已经移除,原来放在永久区的常量、字符串静态变量都移到了元空间,并使用本地内存。
新生代当中又分为伊甸区(eden)和幸存区(from和to),从上面打印的内容可以看到新生代总大小为70656K,使用了43118K,细心的同学的可能会发现eden+from+to=65536K+5120K+5120K=75776 并不等于总大小70656K,这是为什么呢?这是因为新生代的垃圾回收算法是采用复制算法,简单的说就是在from和to之间来回复制(复制过程中再把不可达的对象回收掉),所以必须保证其中一个区是空的,这样才能有预留空间存放复制过来的数据,所以新生代的总大小其实等于eden+from(或to)=65536K+5120K=70656k。

从上图可以看出来新生代总大小为:eden+from+to=1024K+512K+512k=2M和我们设置的-Xmn相对应。
PSYoungGen=eden+from说明是复制回收算法

从上图可以看出来新生代:eden+from+to=3072K+512K+512K=4096K
老年代:16384K 新生代:老年代=4096:16384=1:4刚好和-XXNewRatio=4吻合

从上图可以看出来,Suvivor区=from+to=2048 Eden区=6144K Suvivor:Eden=2:6和-XXSuvivorRatio=6相吻合

#使用外部文件记录GC的日志 -Xloggc:log/gc.log

#监控类的加载 -XX:+TraceClassLoading

#打印GC的相关参数

jmap -dump:file=78272.hropf 78272

非堆内存包括:1.堆外内存 2.文件句柄 3.socket句柄 4.数据库连接
互联网公司的做法:虚拟机,docker,它把一台大服务器上的内存拆分成多个
移动互联网的架构图

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值