首页 文章 精选 留言 我的

精选列表

搜索[bash 指令],共10018篇文章
优秀的个人博客,低调大师

CentOS充下负载监控常用指令

1. load 查看:top | grep load、uptime命令可以查看 说明:表示过去一段时间,平均有多少核心在计算,超过计算机核数表示负债比较大,达到2倍表示要宕机了,三个值分别是1分钟,5分钟,10分钟内 2. cpu利用率 查看:top | grep Cpu,按住SHIFT+H根据进程查看, top -p 进程号查看进程的情况 说明:用户时间(User Time)、系统时间(System Time)、Nice时间(Nice Time,系统调整进程优先级的时候花费的时间)、空闲时间(Idle Time)、等待时间(Waiting Time,等待IO的时间)、硬件中断处理时间(Hard Irq Time)、软件中断处理时间(Soft Irq TIme)、丢失时间(Steal Time) 其他: vmstat、 mpstat 说明: 1.对于每一个CPU来说运行队列不要超过3,例如,如果是双核CPU就不要超过6; 2.如果CPU在满负荷运行,应该符合下列分布, a) User Time:65%~70% b) System Time:30%~35% c) Idle:0%~5% 3. 磁盘剩余空间 查看:df -h 说明:第二行表示总硬盘的使用量为25% 查看:du -d 1 -h /home/tomcat,-d表示深度,-h格式化输出文件大小 4. 网络traffic 查看:sar -n DEV 1 1,-n表示汇报网络情况,DEV表示查看全部网卡,1表示每秒抽样一次,1表示总抽样一次 说明:rxpcks/s每秒接收的数据包量、txpcks/s每秒发出的数据包量、rxKB/s每秒接收的字节数、txKB/s每秒发送的字节数、rxcmp/s每秒收到的压缩包的数量、txcmp/s表示每秒发送的压缩包数量、rxmcst/s每秒收到广播包数量、平均时间表示多次取样的数量 5. 磁盘I/O 查看:iostat -d -k ,-d表示查看磁盘使用情况,-k表示以kb为单位显示 说明:Device设备名称,tps每秒处理的IO次数,kB_read/s每秒从设备读取的数据量,kB_wrtn/s每秒从设备写的数据量,kB_read读取的数据总量,kB_wrtn写入的数据总量 6. 内存使用情况 查看:free -m 说明:total内存总共大小,used已使用内存大小,free可使用内存大小,shared多个线程共享的内存空间大小,buff/cache缓冲区的大小,available缓存的大小 查看:vmstat 查看swapIO的情况,swapIO比较大会严重影响系统的性能 说明:si磁盘交换到内存的数量量,单位kb/s,so内存交换到磁盘的数据量,单位kb/s

优秀的个人博客,低调大师

Docker 镜像小结---操作指令介绍(七)

一、搜索镜像 很多情况下我们可能需要下载某一类别的镜像,这时候我们就会用到搜索功能,也可以去 docker hub 官网页面搜索。 使用语法如下。 Usage: docker search [OPTIONS] TERM Search the Docker Hub for images Options: -f, --filter filter Filter output based on conditions provided --format string Pretty-print search using a Go template --help Print usage --limit int Max number of search results (default 25) --no-trunc Don't truncate output 我们可以看到,第一个镜像是没有用户名的,并且 OFFICIAL 是 OK,这样的镜像是由 Docker 公司进行维护的。 二、下载镜像 使用方法如下。 Usage: docker pull [OPTIONS] NAME[:TAG|@DIGEST] Pull an image or a repository from a registry Options: -a, --all-tags Download all tagged images in the repository --disable-content-trust Skip image verification (default true) --help Print usage 正常情况下,我们输入查到的镜像的全称即可。 三、查看本地镜像 Usage: docker images [OPTIONS] [REPOSITORY[:TAG]] List images Options: -a, --all Show all images (default hides intermediate images) --digests Show digests -f, --filter filter Filter output based on conditions provided --format string Pretty-print images using a Go template --help Print usage --no-trunc Don't truncate output -q, --quiet Only show numeric IDs 四、显示镜像构建历史 Usage: docker history [OPTIONS] IMAGE Show the history of an image Options: --format string Pretty-print images using a Go template --help Print usage -H, --human Print sizes and dates in human readable format (default true) --no-trunc Don't truncate output -q, --quiet Only show numeric IDs 五、删除镜像 Usage: docker rmi [OPTIONS] IMAGE [IMAGE...] Remove one or more images Options: -f, --force Force removal of the image --help Print usage --no-prune Do not delete untagged parents 六、镜像创建 Usage: docker commit [OPTIONS] CONTAINER [REPOSITORY[:TAG]] Create a new image from a container's changes Options: -a, --author string Author (e.g., "John Hannibal Smith <hannibal@a-team.com>") -c, --change list Apply Dockerfile instruction to the created image --help Print usage -m, --message string Commit message -p, --pause Pause container during commit (default true) 之前我们已经演示过了。 七、上传镜像 Usage: docker push [OPTIONS] NAME[:TAG] Push an image or a repository to a registry Options: --disable-content-trust Skip image signing (default true) --help Print usage 之前已经演示过。 八、给镜像打 tag Usage: docker tag SOURCE_IMAGE[:TAG] TARGET_IMAGE[:TAG] Create a tag TARGET_IMAGE that refers to SOURCE_IMAGE Options: --help Print usage 之前已经演示过。 九、存出和载入镜像 Usage: docker save [OPTIONS] IMAGE [IMAGE...] Save one or more images to a tar archive (streamed to STDOUT by default) Options: --help Print usage -o, --output string Write to a file, instead of STDOUT Usage: docker load [OPTIONS] Load an image from a tar archive or STDIN Options: --help Print usage -i, --input string Read from tar archive file, instead of STDIN -q, --quiet Suppress the load output 本文转自 wzlinux 51CTO博客,原文链接:http://blog.51cto.com/wzlinux/2046045,如需转载请自行联系原作者

优秀的个人博客,低调大师

在RedisTemplate中使用scan代替keys指令

SCAN 简介 SCAN命令及其相关的SSCAN命令、HSCAN命令和ZSCAN命令都用于增量地迭代(incrementally iterate)一集元素(a collection of elements): SCAN命令用于迭代当前数据库中的数据库键。 SSCAN命令用于迭代集合键中的元素。 HSCAN命令用于迭代哈希键中的键值对。 ZSCAN命令用于迭代有序集合中的元素(包括元素成员和元素分值)。 基本用法可以参考:http://doc.redisfans.com/key/scan.html SCAN和KEYS的区别 当KEYS命令被用于处理一个大的数据库时, 又或者SMEMBERS命令被用于处理一个大的集合键时, 它们可能会阻塞服务器达数秒之久。在高并发下会导致请求大量堆积进而导致服务雪崩。有些公司在生产环境直接禁用kyes *命令。但是在redis服务器key的数量不大的情况下,使用keys也是没啥问题的。 SCAN命令及其相关的SSCAN命令、HSCAN命令和ZSCAN命令都用于增量地迭代 ,它们每次执行都只会返回少量元素,不会阻塞服务器, 所以这些命令可以用于生产环境, 而不会出现像KEYS命令、SMEMBERS命令带来的问题。 SCAN一样有它自己的问题: 因为是分段获取key,所以它会多次请求redis服务器,这样势必取同样的key,scan耗时更长。 在对键进行增量式迭代的过程中, 键可能会被修改, 所以增量式迭代命令只能对被返回的元素提供有限的保证。 SCAN cursor [MATCH pattern] [COUNT count] 使用SCAN代替KEYS /** * redis扩展工具 * * @author yuhao.wang3 * @since 2020/2/21 23:35 */ public abstract class RedisHelper { private static Logger logger = LoggerFactory.getLogger(RedisHelper.class); /** * scan 实现 * * @param redisTemplate redisTemplate * @param pattern 表达式,如:abc*,找出所有以abc开始的键 */ public static Set<String> scan(RedisTemplate<String, Object> redisTemplate, String pattern) { return redisTemplate.execute((RedisCallback<Set<String>>) connection -> { Set<String> keysTmp = new HashSet<>(); try (Cursor<byte[]> cursor = connection.scan(new ScanOptions.ScanOptionsBuilder() .match(pattern) .count(10000).build())) { while (cursor.hasNext()) { keysTmp.add(new String(cursor.next(), "Utf-8")); } } catch (Exception e) { logger.error(e.getMessage(), e); throw new RuntimeException(e); } return keysTmp; }); } } 源码分析 我看到网上很多文章说这种实现方式cursor 只会被执行一次,其实这是错误的,使用这种方式cursor 会将所有的符合条件的key都返回回来,他只是将游标的移动给封装了起来而已,真正执行查询的语句起始在cursor.hasNext()里面,源码如下: /* * (non-Javadoc) * @see java.util.Iterator#hasNext() */ @Override public boolean hasNext() { assertCursorIsOpen(); // 存放结果集的容器没有值,并且游标状态是未完成的时候进行Scan动作 while (!delegate.hasNext() && !CursorState.FINISHED.equals(state)) { scan(cursorId); } // 如果结果容器还有值直接返回true,进行循环 if (delegate.hasNext()) { return true; } // 如果结果容器没有值,但是游标不为0则表示还有值,需要进行下一次循环 if (cursorId > 0) { return true; } return false; } private void scan(long cursorId) { // 进行scan操作 ScanIteration<T> result = doScan(cursorId, this.scanOptions); // 结果集处理 processScanResult(result); } private void processScanResult(ScanIteration<T> result) { if (result == null) { // 重置结果集容器 resetDelegate(); // 设置游标状态为完成 state = CursorState.FINISHED; return; } // 获取当前游标位置 cursorId = Long.valueOf(result.getCursorId()); if (isFinished(cursorId)) { // 游标返回0,设置游标状态为完成 state = CursorState.FINISHED; } if (!CollectionUtils.isEmpty(result.getItems())) { // 将查询结果放到容器中 delegate = result.iterator(); } else { resetDelegate(); } } 由上面源码我们可以看到游标的移动是在processScanResult()方法中完成。通过state来记录当前游标状态,大致过程为: 当存放结果集的容器没有值,并且游标状态是未完成的时候进行Scan动作 如果结果容器还有值直接返回true,进行循环 如果结果容器没有值,但是游标不为0则表示还有值,需要进行下一次循环

资源下载

更多资源
腾讯云软件源

腾讯云软件源

为解决软件依赖安装时官方源访问速度慢的问题,腾讯云为一些软件搭建了缓存服务。您可以通过使用腾讯云软件源站来提升依赖包的安装速度。为了方便用户自由搭建服务架构,目前腾讯云软件源站支持公网访问和内网访问。

Spring

Spring

Spring框架(Spring Framework)是由Rod Johnson于2002年提出的开源Java企业级应用框架,旨在通过使用JavaBean替代传统EJB实现方式降低企业级编程开发的复杂性。该框架基于简单性、可测试性和松耦合性设计理念,提供核心容器、应用上下文、数据访问集成等模块,支持整合Hibernate、Struts等第三方框架,其适用范围不仅限于服务器端开发,绝大多数Java应用均可从中受益。

Rocky Linux

Rocky Linux

Rocky Linux(中文名:洛基)是由Gregory Kurtzer于2020年12月发起的企业级Linux发行版,作为CentOS稳定版停止维护后与RHEL(Red Hat Enterprise Linux)完全兼容的开源替代方案,由社区拥有并管理,支持x86_64、aarch64等架构。其通过重新编译RHEL源代码提供长期稳定性,采用模块化包装和SELinux安全架构,默认包含GNOME桌面环境及XFS文件系统,支持十年生命周期更新。

Sublime Text

Sublime Text

Sublime Text具有漂亮的用户界面和强大的功能,例如代码缩略图,Python的插件,代码段等。还可自定义键绑定,菜单和工具栏。Sublime Text 的主要功能包括:拼写检查,书签,完整的 Python API , Goto 功能,即时项目切换,多选择,多窗口等等。Sublime Text 是一个跨平台的编辑器,同时支持Windows、Linux、Mac OS X等操作系统。

用户登录
用户注册