问题        最近我们遇到了一个问题,我们有的Job是常驻的,输出的日志是固定为了,例如如下命令(once.sh 是一个死循环的脚本),这样所有的命令都要输出日志到 notice_wechat.log{ /bin/sh jobs/bin/once.sh notice/wechat ;} >> /data/logs/jobs/notice_wechat.log 2>&1        如果使用默认的logrotate【logrotate基础传送门】的配置,就会重命名然后生产一个新文件,例如 notice_wechat.log_20221020 。但是进程是常驻的,切割之后日志会输出到 notice_we
缘由        前面我们讲解了 ELK 的搭建过程。最近在处理系统数据发现了一个问题,一个ES节点处理太慢了,基本上要20多个小时才能处理完。这样我们就只能增加ES节点,部署集群模式了。当前是这种单节点服务集群搭建目的要搭建成3节点的服务器,其中3个节点是主节点也是数据节点其实配置ES集群是比较方便了,大家主要几个参数就可以了,主要注意以下几个参数就好了#集群的名字 cluster.name: app-data #节点的名字 node.name: node-1 #节点是否为master节点 node.master: true #节点是否为数据节点 node.data: true #发现节点,一般三个就够了,不需要配置所有的节点 discovery.zen.ping.unicast.hosts: ["192.160.10.1:9300","192.160.10.2:9
  起源        最近发下很多人在我的python课程下面提问,关于执行python3.7 安装某些扩展有如下报错ModuleNotFoundError: No module named ‘_ctypes’出现原因        Python3中有个内置模块叫ctypes,它是Python3的外部函数库模块,它提供兼容C语言的数据类型,并通过它调用Linux系统下的共享库(Shared library),此模块需要使用CentOS7系统中外部函数库(Foreign function library)的开发链接库(头文件和链接库)。由于在CentOS7系统中没有安装外部函数库(libffi)的开发链接库软件包,所以在安装pip的时候就报了"ModuleNotFoundError:
  起源        最近发下很多人在我的python课程下面提问,关于执行python 定时器Job会报错 如下In aggregated query without GROUP BY, expression #1 of SELECT list contains出现原因        在MySQL5.7.5后,默认开启了ONLY_FULL_GROUP_BY,所以导致了之前的一些SQL无法正常执行,其实,是我们的SQL不规范造成的,因为group by 之后,返回的一些数据是不确定的,所以才会出现这个错误。解决方案        我们知道了原因,就可以去找到对应的解决方法,主要都是修改
ELK简介ELK是什么?    elk是三个开源软件的缩写,分别是:Elasticsearch、Logstash、Kibana 。由于Logstash 客户端太占用资源,对服务器的要求比较高,后来FileBeat出现了 ,解决了资源问题,官方也推荐这个工具。    Elasticsearch:实时全文搜索和分析引擎,提供搜集、分析、存储数据三大功能    Logstash:日志收集,分析,过滤并转化到对应的存储库    Kibana:一个基于Web的图形界面,用于搜索、分析和可视化存储在 Elasticsearch指标中的日志数据    Filebeat:监控日志文件、转发。 需要收集数据的服务器端需要安装这个架构图如上图你可以看出来,FileBeat 将数据 通过队列 发给 Logstas
悲催的事情    今天下午2点多(时间发生故障的时间是14:14 ,反馈时间却是:14:25 )收到运营推广部门同事告知,网站打不开了,这个烦呀,怎么会打不开了,由于以前的系统有问题,都重新写了,切换到新的系统上面了,打不开就直接报错了,报错页面如下分析过程 找到错误日志               出现错误不可怕,这一点我们必须第一时间明确,千万不要担心,担心解决不了任何问题。 对我们最有帮助的就是各种业务日志。通过查阅日志得出如下的错误,当时出现了大量的错误日志curl: (56) Recv failure: Connection reset by peer       
需求我们都知道在Mac电脑下面有一个非常好的抓包工具:Charles。但是这个只能抓代理的数据包。但是有时候想要调试本地网卡的数据库 Charles 就没办法了。就想到了在windows下面的一个Fiddler。搜索了下相关文章发现 还真可以在Mac下面安装Fiddler。Mono安装首先,Mac下需要使用.Net编译后的程序,需要用到跨平台的方案Mono(现阶段微软已推出跨平台的方案.Net Core,不过暂时只支持控制台程序)。安装程序可以从http://www.mono-project.com/download/#download-mac地址下载。我下载的5.16.0版本。 安装完后,在Terminal里执行以下命令(5.16.0是你的版本号)/Library/Frameworks/Mono.framework/Versions/5.16.0/bin/mozroots --import --sync接下来如果想要运行Fiddler,还需要把Mono加入
  当使用php5自带的file_get_contents方法来获取远程文件的时候,有时候会出现file_get_contents(): failed to open stream: HTTP request failed!这个警告信息。google或者baidu一下,好多这样的问题,解决的方法都是修改PHP.ini,把allow_url_fopen给启用,改成 allow_url_fopen = On这样做可以解决某些人的问题,有人说在php.ini中,有这样两个选项:allow_url_fopen =on(表示可以通过url打开远程文件),user_agent="PHP"(表示通过哪种脚本访问网络,默认前面有个 " ; " 去掉即可。)重启服务器。但是有些还是会有这个警告信息,想用完美的解决还差一步,还得设置php.ini里面的user_agent,php默认的user_agent是PHP,我们把它改成Mozilla/4.0 (compatible
  问题最近遇到一个这样的问题,新建数据库表的时候 提示 错误如下Invalid default value for 'created_time' timestamp field语句如下`created_time` timestamp NOT NULL DEFAULT '0000-00-00 00:00:00' COMMENT '插入时间' 错误大致的意思 就是不能为 timestamp字段设置指定的默认值,也就是语句中的 0000-00-00 00:00:00,但是很奇怪在本地就可以,为什么线上服务器就不行了?本地数据库版本:5.5.46 上线数据库版本:5.7.17后来经过查询文档(文档地址)发现,其实从5.6.17这个版本就默认设置了不允许插入 0 日期了,术语是 NO_ZERO_IN_DA
  目的本文的目的主要是说明 命名空间的 use 关键词 和 new ClassName 这两个步骤,哪个步骤才会执行自动加载,这是逻辑有点混乱的表现,这种想法也是很正常的,让我们来解密吧命名空间(namespace)php从5.3加入了命名空间,我略懂一些java,所以命名空间还是比较好理解的,为什么需要命名空间啦?主要解决自己写的内部类/函数/常量  和 第三方的类/函数/常量冲突。引用命名空间下资源都要 使用关键字 use 标明 例如require_once("apanly/BrowserDetector/Browser.php"); use apanly\BrowserDetector\Browser; new Browser();自动加载php可以自定义自动加载函数,主要减少include 和 require 的使用。例如function myLoader($classname){    $c
  偶然发现最近在公司日志平台 总是可以看到很多关于php curl的错误信息Operation timed out after 0 milliseconds with 0 out of 0 bytes received Resolving timed out after 5514 milliseconds非常奇怪,以前都是好的,使用wget获取也非常慢,从下面的结果可以看出来 dns解析比较慢wget www.domain.com --2016-11-19 22:17:30--  http://www.domain.com/ Resolving www.domain.com... # 此处停滞约 5 秒 xxx.xxx.xxx.xx
修改 应用名直接 修改 config.xml中的name修改icon 和 启动界面在resources目录有个 icon.png  和 splash.png 文件,直接把文件覆盖执行重新生成命令ionic resources  #重新生成icon 和 splash ionic resources --icon #重新生成icon ionic resources --splash # 重新生成splash 
  公司有个群发短信的小项目,项目上线了很久也没有什么问题,最近有商家说 我短信群发不能用现象是:发现有时候可以发送,有时候不可以发送,看截图发送的手机数量不一样通过调试php代码发现 php 只接受了1000个 请求参数,然后参看nginx的access 状态是200,正常。在查看php的error log 发现有句提示如下Unknown: Input variables exceeded 1000这句提示就是 最多1000 的请求参数,这个在某些项目中1000可能满足不了需求,所以我们需要修改下,找到php.ini文件 ,搜索关键字  max_input_vars  根据项目需求设置满足你需求的值
  服务器经常会产生各种各样的日志文件,我们需要定期清理日志的分类系统日志应用日志系统日志例如系统的history 历史信息   crontab的运行日志  一般系统日志系统都帮我们运维好了,不需要额外配置应用日志例如nginx  的access 和 error 日志 ,php框架的运行日志,这些日志是我们排查问题的有力证据工具logrotatelogrotate是什么logrotate是大多数linux系统自带的日志切割工具logrotate的适用场景logrotate常用来切割仍在被写的“动态”文件,它支持 按时间间隔或文件大小 来触发文件的自动切分(automatic rotation)实战按天保存一周的Nginx日志压缩文件,保留30天,配置文件为「/etc/logrotate.d/nginx」最后代码如下(本人ubuntu系统)/data/logs/nginx/*.log {      &nb
  Squid简介Squid可以做什么性能要素Squid安装Squid快速体验Squid配置Squid简介Squid is a caching proxy for the Web supporting HTTP, HTTPS, FTP, and more. It reduces bandwidth and improves response times by caching and reusing frequently-requested web pages. Squid has extensive access controls and makes a great server accelerator. It runs on most available operating systems, including Windows and is licensed under the GNU GPL翻译过来大致意思: Squid是一个支持HTTP,HTTPS,FTP等众多协议的缓存代理
简介Charles 是在 Mac 下常用的截取网络封包的工具,在做 iOS 开发时,我们为了调试与服务器端的网络通讯协议,常常需要截取网络封包来分析。Charles 通过将自己设置成系统的网络访问代理服务器,使得所有的网络访问请求都通过它来完成,从而实现了网络封包的截取和分析。Charles 是收费软件,可以免费试用 30 天。试用期过后,未付费的用户仍然可以继续使用,但是每次使用时间不能超过 30 分钟,并且启动时将会有 10 秒种的延时。因此,该付费方案对广大用户还是相当友好的,即使你长期不付费,也能使用完整的软件功能。只是当你需要长时间进行封包调试时,会因为 Charles 强制关闭而遇到影响。Charles 主要的功能包括:支持 SSL 代理。可以截取分析 SSL 的请求。支持流量控制。可以模拟慢速网络以及等待时间(latency)较长的请求。支持 AJAX 调试。可以自动将 json 或 xml 数据格式化,方便查看。支持 AMF 调试。可以将 Flash Remoting 或
引言权限系统模块对于互联网产品是一个非常重要的功能,可以控制不同的角色合理的访问不同的资源从而达到安全访问的作用此外本次课程有视频讲解: http://www.imooc.com/learn/799 ,对应演示系统:http://rbac.54php.cn 权限控制模型ACLRBAC 基于角色的访问控制从上图我们可以看出,ACL是用户和权限直接关系的,RBAC则是通过角色间接关联用户和权限的。所以角色是RBAC系统的一个重要属性Why RBAC为什么我们选择RBAC模型,原因如下方便用户分组方便权限分配和回收扩展方便,可以满足大部分业务需求RBAC框架图中有5个角标数字,对应的就是RBAC模型重要的5个属性RBAC关系图序号关键属性描述1用户 张三、李四、王五2角色销售经理、销售、前台3用户角色关系张三 是  销售经理 、李四 王五 是 销售4权限添加客户、编辑客户、删除客户,查看客户5角色权限关系销售 拥有 查看客户的 权限、销售经理可
  第一部分,通信接口的实现标签(空格分隔): PHP 手机后台 api 通信接口 AndyPHP开发手机API时,一般返回XML或JSON数据类型的数据,除了要返回从源数据(程序本身需要的数据)外还应附上状态码,以下是一段封装后的数据,它使用JSON格式展现:{ code: 200, message: "Success", data: [ { username: "安明哲", password: "123456", level: "1", gold: "0", id: "6", create_time: "2015-09-26 08:25:31", is_active: "1", is_admin: "0" }, {
为什么想到写篇缓存网站优化?都是逗比穷惹的祸,本人的vps内存比较小,而我自己又做了图片系统,博客的图片都是经过裁剪的,图片做裁剪可以非常占用内存了为了降低vps的压力,就只能在前端做缓存优化了。http真是一个伟大的协议,我们就来通过http header 关键字来做网站优化1)修改时间:Last-Modified  和 IF_MODIFIED_SINCE   Last-Modified 关键字是用来设置文档的最后的更新日期,如下代码  Last-Modified:Thu, 15 Oct 2015 13:47:06 GMT 浏览器发现response header 有 Last-Modified 就会对资源缓存的,在下次请求同样的资源就会在request header 加 If-Modified-Since 并且值等于 Last-Modified 的 值,如下If-Modified-Since:Thu, 15 Oct
  最近做项目,发现了一个报错  Only variables can be passed by reference,  意思是“只有变量能通过‘引用’”就是在代码中 使用了一个方法,这个方法的参数值传址引用的例如php的 end方法php官网的说法(PHP 4, PHP 5)end — 将数组的内部指针指向最后一个单元说明 ¶mixed end ( array &$array )end() 将 array 的内部指针移动到最后一个单元并返回其值。参数 ¶array这个数组。 该数组是通过引用传递的,因为它会被这个函数修改。 这意味着你必须传入一个真正的变量,而不是函数返回的数组,因为只有真正的变量才能以引用传递。返回值 ¶返回最后一个元素的值,或者如果是空数组则返回 FALSE。错误的使用:end( explode
  1.mysqlbinlog工具使用方法如下:先使用 show binary logs 查看在使用导出命令mysqlbinlog -R -uroot -pxxxx -hxxx.xxx.xxx.xxx -d db_name  --base64-output=decode-rows  --start-datetime='2015-08-13 13:11:21'  --stop-datetime="2015-08-13 13:18:21" mysql-bin.000008 > mysql-bin.ran_trade_08_13.sql2.mysqldump使用方法如下:# 备份单个数据库 mysqldump  --skip-opt  -u
  • 微信公众号 微信小程序
  • 微信机器人
  • 群1:1046090432
  • 群2:585567981