GitLab → 搭建中常遇的问题与日常维护 Gitlab服务命令: 搭建中遇到的问题 安装卡住 502 GitLab 新装或重启后,需要等待 1 分钟才能使用 日常维护 重置管理员的密码 重制其他用户密码: 偏好设置 设置中文 批量添加账号 Gitlab服务命令: 启动所有 gitlab 组件;sudo gitlab-ctl start 停止所有 gitlab 组件;sudo gitlab-ctl stop 重启所有 gitlab 组件;sudo gitlab-ctl restart 查看服务状态;sudo gitlab-ctl status 启动服务(再次加载配置);sudo gitlab-ctl reconfigure 修改默认的配置文件;sudo vim /etc/gitlab/gitlab.rb 检查gitlab;gitlab-rake gitlab:check SANITIZE=true --trace 查看日志;sudo gitlab-ctl tail 搭建中遇到的问题 安装卡住 这基本是内存不足导致 yi开始比较任性,没按官方的推荐(内存最少 4G)来,弄了个 2G .... GitLab → 搭建中常遇的问题与日常维护 gitlab
Qt有Debug、Warning、Info、Critical、Fatal五种级别的调试信息。 qDebug:调试信息 qWarning:警告信息 qInfo:警告信息 qCritical:严重错误 qFatal:致命错误 Qt4提供了qInstallMsgHandler(Qt5:qInstallMessageHandler)对qDebug、qWarning、qCritical、qFatal等函数输出信息的重定向处理。 qInstallMsgHandler是一个回调函数,由qDebug、qWarnng、qCritical、qFatal函数进行触发,qDebug、qWarnng、qCritical、qFatal函数处理的消息文本会被qInstallMsgHandler所指向的回调函数截获,允许用户自己来处理输出的消息文本。 一、来看官方的例子: void outputMessage(QtMsgType type, const QMessageLogContext &context, const QString &msg) { QString text; swi.... Qt日志重定向qInstallMessageHandler,输出至文件及网络 qt
下面的笔记是根据我自己的 mysql 服务的版本号来的 mysql> select version(); +------------+ | version() | +------------+ | 5.6.16-log | +------------+ 1 row in set (0.00 sec) 随便放一个查询结果,我们要说的就是这里的type的值。 mysql> explain SELECT id,title FROM seo_php_article where is_delete=0 order by id asc limit 66500,500; +----+-------------+-----------------+------+---------------+-----------+---------+-------+-------+-----------------------------+ | id | select_type | table | type | possible_keys | key | key_len | ref | rows | .... 有更新! mysql explain type 字段解读 mysql
WebSocket简介 1)、WebSocket是一种在单个TCP连接上进行全双工通信的协议。 2)、WebSocket使得客户端和服务器之间的数据交换变得更加简单,允许服务端主动向客户端推送数据。 3)、WebSocket API中,浏览器和服务器只需要完成一次握手,两者之间就直接可以创建持久性的连接,并进行双向数据传输。 全双工:通信允许数据在两个方向上同时传输,全双工指可以同时(瞬时)进行信号的双向传输(A→B且B→A)。指A→B的同时B→A,是瞬时同步的。 WebSocketClient.h class WebSocketClient : public QThread { Q_OBJECT public: WebSocketClient(); ~WebSocketClient(); protected: virtual void run(); public: // 启动连接 - 必须把url地址 协议头 设置完成后再启动 bool startConnect(); // 断开连接 void disconnect(); //设置链接的URL void setConnectUr.... 有更新! Qt实现QWebSocket客户端,断线重连 qt
druid 是阿里开源在 github 上面的数据库连接池,里面有一个专门解析 sql 语句的模块。 源码位置 SQL Parser 模块的介绍 相关 API druid 使用说明: druid 现在已经直接发布到了 maven 仓库中,可以直接引用。 1、新建一个 maven 工程并命名 2、在 pom.xml 文件中加入如下配置,当前最新使用 1.0.19 <dependency> <groupId>com.alibaba</groupId> <artifactId>druid</artifactId> <version>1.0.19</version> </dependency> 3、示例代码,druid 的源码中有丰富的测试代码,具体路径如下 src/test/java/com.alibaba.druid.bvt.sql.mysql.visitor/ 下面的 App.java 参考的是 MySqlSchemaStatVisitorTest_Delete.java 这个源文件 imp.... 有更新! 利用 druid 的 sql parser 模块解析 sql 语句获得表名 diruid
有时候发布用Qt写的软件是件令人烦恼的事情,明明发布的只是一个简单功能的小软件,非得再附上一堆超大的动态链接库,实在让人觉得汗颜 。 在可执行文件单文件化方面,有多种方法。常用的是编译并使用静态 Qt 库、使用 exe 打包工具等。exe 打包工具有很多,本文介绍使用 Enigma Virtual Box 来打包和压缩文件。 从收集动态链接库开始 通常是通过查找软件对动态链接库的依赖来收集的,有多种流行的工具软件可供使用:Process Explorer(微软自家的东东)、Dependency Walker 都是不错的软件。但本文介绍的是Qt自带的小工具:windeployqt.exe windeployqt 是一个用于 Windows 系统上的控制台程序,方便起见,可以写一个批处理文件(*.bat)放在 exe 所在的文件夹: @echo off C:\Qt\Qt5.5.0\5.5\mingw492_32\bin\windeployqt.exe target.exe(换成你的exe文件名) pause 执行批处理后可以看到文件夹加入了不少动态链接库: 注意,可能会缺少三个动态链.... Qt 实现单个EXE文件(绿色运行版) Enigma Virtual Box qt
1. 问题 spring-cloud-gateway 网关新增了一个限流功能,使用的是模块自带的限流过滤器 RequestRateLimiterGatewayFilterFactory,基于令牌桶算法,通过 redis 实现。 其原理是 redis 中针对每个限流要素(比如针对接口限流),保存 2 个 key:tokenKey(令牌数量),timeKey(调用时间)。每次接口调用时,更新 tokenKey 的值为:原先的值 + (当前时间 - 原先时间)* 加入令牌的速度,如果新的 tokenKey 的值大于 1,那么允许调用,否则不允许;同时更新 redis 中 tokenKey,timeKey 的值。整个过程通过 lua 脚本实现。 在加入限流功能之前,500 客户端并发访问,tps 为 6800 req/s,50% 时延为 70ms;加入限流功能之后,tps 为 2300 req/s,50% 时延为 205ms,同时,原先 cpu 占用率几乎 600%(6 核) 变成不到 400%(cpu 跑不满了)。 2. 排查和解决过程 2.1 单个 CPU 跑满 查看单个线程的 cpu .... java性能调优记录 java
在java程序运行时,如果替换classpath下的某个jar包文件,可能会导致程序出现ClassNotFoundException**。 具体场景 我们要升级线上服务时,可能经常只需要替换其中一两个jar包即可完成升级。有时我们为了方便,经常会先替换完jar包再进行重启。其实这样的做法会有一个隐患,如果在你重启之前程序需要从这个jar包加载某个类的话,即使这个类在这个jar包中,也会导致程序出现ClassNotFoundException。 我们可以写个demo来验证一下这个问题 : public class A { public static void main(String[] args) throws InterruptedException { System.out.println("begin"); //在sleep期间jar包发生了改变 Thread.sleep(10000L); B b = new B(); b.print(); } } public class B { void print() { System.out.println("print B"); } }.... 有更新! 不要替换运行中JVM的相关jar包 jvm
使用 mysqldump -uroot -p123456 databases > /home/databases.sql 进行备份 在使用 mysql -uroot -p123456 databases < /home/databases.sql 进行mysql恢复的时候,出现如下报错。 ERROR at line 79: Unknown command ‘\0’. 上述错误,是因为导出时字符集的问题,解决方法如下:–default-character-set=utf8 在导入时加上 mysql -uroot -p123456 --default-character-set=utf8 databases < /home/databases.sql 就可以了。 有更新! mysql导入时出现"ERROR at line : Unknown command '\''."的解决办法 mysql
1.Spring Boot Admin 是什么 Spring Boot Admin 是由 codecentric 组织开发的开源项目,使用 Spring Boot Admin 可以管理和监控你的 Spring Boot 项目。它分为客户端和服务端两部分,客户端添加到你的 Spring Boot 应用增加暴漏相关信息的 HTTP 接口,然后注册到 Spring Boot Admin 服务端,这一步骤可以直接向服务端注册,也可以通过 Eureka 或者 Consul 进行注册。而 Spring Boot Admin Server 通过 Vue.js 程序监控信息进行可视化呈现。并且支持多种事件通知操作。 2. Spring Boot Admin 服务端 Spring Boot Admin 服务端是基于 Spring Boot 项目的,如何创建一个 Spring Boot 项目这里不提,你可以参考之前文章或者从 https://start.spring.io/ 直接获得一个 Spring Boot 项目。 2.1. 添加依赖 只需要添加 web 依赖和 Spring-boot-admin-s.... 有更新! 使用 SpringBoot Admin 监控你的 SpringBoot 程序 spring
今天分享的压测案例是带宽占用高的问题。 压测过程中,tps上不去,监控应用服务器cpu、内存、磁盘、网络、线程栈等等,发现网络传输数据量大,带宽几乎占满了,也就是服务器带宽到达瓶颈点了。 服务器网卡一般都是千兆,我们可以确认一下,先用ifconfig来看下当前服务器的网卡,是eth0;另外,lo是本地环路接口 用ethtool查询网卡信息,下面显示的速度是1000Mb/s,注意,这里是Mb,不是MB b是bit的缩写,称“位”,为一位二进制数,是计算机表示中最小单位,称为"信息基本单位"。如同原子构成所有物质一样,bit构成计算机虚拟世界中所有“物质”。(摘抄自百度) B是byte的缩写,称“字节”,字节是信息存储中最常用的单位,是计算机中存储信息的“基本单位”。(1B=8b) 单位换算为字节,除以8,是125MB/s,乘以1024,就是128000kB/s 安装sar yum install sysstat 通过sar命令(sar -n DEV 1)查看网络情况,rxkB/s表示每秒接收的数据量,可以看出,带宽占用比较高 经和开发沟通得知,是调用公共方法,返回了很多不必要的数.... 性能测试案例:带宽占用高 tcpdump
1、现象: 日志服务器当初考虑不周,分区划分不太合理: 2、目标: 将/home磁盘空间缩减 并将新的磁盘分区扩充到/根目录 卸载/home分区并压缩分区 卸载/home时 提示目标忙, fuser -m /home 查看谁用/home时提示没有fuser命令 [root@localhost zabbix]# umount /home umount: /home:目标忙。 (有些情况下通过 lsof(8) 或 fuser(1) 可以找到有关使用该设备的进程的有用信息) [root@localhost zabbix]# fuser -m /home -bash: fuser: 未找到命令 解决没有fuser命令的问题: 在CentOS / RHEL 7上找不到fuser命令 -bash: fuser: command not found yum install psmisc fuser -m /home //继续查找谁在用/home kill -9 11757 //停止进程 umount /home //卸载/home文件系统 压缩分区: resize2fs -p /.... 有更新! Linux 系统下如何对目录扩容 linux
pam_tally2 module is used to lock user accounts after certain number of failed ssh login attempts made to the system. This module keeps the count of attempted accesses and too many failed attempts. pam_tally2 module comes in two parts, one is pam_tally2.so and another is pam_tally2. It is based on PAM module and can be used to examine and manipulate the counter file. It can display user login attempts counts, set counts on individual basis, unlock all user counts. Pam_tally2 to Lock SSH LoginsBy.... 有更新! Use Pam_Tally2 to Lock and Unlock SSH Failed Login Attempts ssh