问题:用laravel开发定时任务时,发生了日志没有写入权限导致项目打不开的问题 原因:linux的添加定时任务时默认是当前登录用户,我定时任务会生成日志 crontab: kernel: 生成日志的文件所有者是当前用户yang,其他用户没有写入权限 而php的执行用户是apche 经过一番研究,这里给crontab 指定的用户与php执行的用户一致: crontab -u apache -e 写入定时执行的任务并删除之前的定时任务 亲测解决…
关于Laravel的任务调度(定时任务)的配置在此不做赘述,跟着官方文档一步一步的操作是不会导致定时任务不能正常工作的. 为保证能及时捕获定时任务执行出现异常的原因,只需在配置系统crontab时指定日志文件即可.在执行中出现的任何问题都将会记录在你指定(任意区域,需注意权限)的日志当中.这对于寻找问题原因来说,是极为方便的. * * * * * cd /path-to-your-project && php artisan schedule:run >> 你的日志文件位置.l…
PHP中的框架众多,我自己就接触了好几个.大学那会啥也不懂啥也不会,拿了一个ThinkPHP学了.也许有好多人吐槽TP,但是个人感觉不能说哪个框架好,哪个框架不好,再不好的框架你能把源码读上一遍,框架的设计思想理解了也能学到好多东西.况且有好多东西自己还不理解,所以认真学习一个框架这还是可以学不少东西的. 还是先说说Laravel吧,现在已经到5.2了.就我自己来说之前没有接触过laravel,但是学习过laravel之后感觉这个框架确实不错,并且老外用的不亦乐乎.他的开发社区还可以,文档比较齐…
一.日志管理 先来看看ngnix的配置文件的server段 接下来我们解释一下默认格式的具体意思 #log_format main '$remote_addr(远程IP) - $remote_user(远程用户) [$time_local](访问时间) "$request"(请求方式) ' # '$status(状态302.404.401.403等) $body_bytes_sent(请求体 body 长度等) "$http_referer"(referer来源信息…
用过Laravel的小伙伴一开始安装完框架后可能都遇到过daily 日志文件写入失败的问题,接下来我们就来详细说下日志文件写入失败的原因以及对应的解决方案. 在讲这个问题之前可能需要简单介绍下Linux系统下的文件的Ownership和Permission. Ownership User User是文件的所有者,默认情况下,用户创建了一个文件,该文件的所有者就是该用户. Group 一个用户组能包含多个用户,所有属于这个组的用户都有相同的权限来访问文件.假设你有一个项目,很多用户都需要访问这个项…
1. 目的应用系统的开发和维护离不开日志系统,选择一个功能强大的日志系统解决方案是应用系统开发过程中很重要的一部分.在.net环境下的日志系统解决方案有许多种,log4net是其中的佼佼者.在Windows2000及以上操作系统中,有一个Windows日志系统,它包括应用程序(Application)事件日志.系统(System)日志和安全(Security)日志,事件日志也可以是自定义日志.在.net Framework中也提供了相应的类和接口来使用应用程序事件日志或者自定义事件日志.使用Wi…
log4net在本地执行时候,日志正常写入,但是发布到服务器上的时候,日志就无法正常写入 解决方案: 1.文件权限 在发布到服务器上的时候,可能文件没有写入权限,导致日志无法正常写入 打开IIS 找到发布的文件->点击右键->编辑权限,出现该文件的属性 点击安全->编辑->找到IIS_IUSRS给他写入权限 2.没有log4net的文件配置 在配置的时候,有些人的配置文件不一样,有的是在web.config中配置,有的是新建文件log4net.config中配置 但是在发布的时候,…
如何监控 Log4j2 异步日志遇到写入瓶颈 在之前的一篇文章中(一次鞭辟入里的 Log4j2 异步日志输出阻塞问题的定位),我们详细分析了一个经典的 Log4j2 异步日志阻塞问题的定位,主要原因还是日志文件写入慢了.并且比较深入的分析了 Log4j2 异步日志的原理,最后给出了一些解决方案. 新的问题 - 如何更好的应对这种情况? 之前提出的解决方案仅仅是针对之前定位的问题的优化,但是随着业务发展,日志量肯定会更多,大量的日志可能导致写入日志成为新的性能瓶颈.对于这种情况,我们需要监控. 首…
原文链接:使用Log4j将程序日志实时写入Kafka 很多应用程序使用Log4j记录日志,如何使用Kafka实时的收集与存储这些Log4j产生的日志呢?一种方案是使用其他组件(比如Flume,或者自己开发程序)实时监控这些日志文件,然后发送至Kafka.而另外一种比较便捷的方案是使用Kafka自带的Log4jAppender,在Log4j配置文件中进行相应的配置,即可完成将Log4j产生的日志实时发送至Kafka中. 本文以Kafka0.8.2为例,介绍KafkaLog4jAppender的配置…
将不同级别的logging 日志信息写入不同文件 # -*- coding: utf-8 -*- import os import time from logging.handlers import RotatingFileHandler import logging import inspect dir = os.path.dirname(__file__) handlers = {logging.NOTSET: os.path.join(dir, 'notset.log'), logging…
原文链接:flume学习(三):flume将log4j日志数据写入到hdfs 在第一篇文章中我们是将log4j的日志输出到了agent的日志文件当中.配置文件如下: tier1.sources=source1 tier1.channels=channel1 tier1.sinks=sink1 tier1.sources.source1.type=avro tier1.sources.source1.bind=0.0.0.0 tier1.sources.source1.port=44444 tie…
1. openrestry的安装 OpenResty = Nginx + Lua,是⼀一个增强的Nginx,可以编写lua脚本实现⾮非常灵活的逻辑 (1)安装开发库依赖 yum install -y pcre-devel openssl-devel gcc curl (2)配置yum的依赖源 yum install yum-utils yum-config-manager --add-repo https://openresty.org/package/centos/openresty.repo…
事故时常有,最近特别多!但每次事故总会有人出来背锅!如果不是自己的锅,解决了对自己是一种成长,如果是自己的锅,恐怕锅大了,就得走人了,哈哈哈... 这不,最近又出了一个锅:从周五开始,每天到11点就不停的接到服务器报警,对于一般的报警,我们早已见怪不怪了,然后作了稍微排查(监控工具: CAT),发现是redis问题,没找到原因,然后过了一会自己就好了,所以刚开始也没怎么管他.然后,第二天报警,第三天报警,领导火了,然后只好说,要不等到周一上班咱们再解决吧! 周一,开发同学还没去找运维同学查问题,…
摘要:众所周知,Nginx是目前最流行的Web Server之一,也广泛应用于负载均衡.反向代理等服务,但使用过程中可能因为对Nginx工作原理.变量含义理解错误,或是参数配置不当导致Nginx工作异常.本文介绍的就是福建开机广告Nginx的参数location处理静态文件配置不当引发的nginx日志骤增到14G的问题排期过程. 一.问题现象及系统介绍 现象:12月15日 21:02分,正在外面吃宵夜,手机收到监控平台的一条"服务器磁盘空间<20%"报警短信. 系统介绍:为了看此…
1.事情起始: 我们每个月要给商家进行出账,所以有定时任务去跑商家的订单和售后进行出账,这个功能已经上线很久了,代码执行多次都没问题,突然有一天,产品找我说出现bug了: 这时,去生产库查询重复的订单,发现大部分商家都出现了问题,有些商家的订单没问题,接下来就拷贝生产数据到开发环境,用生产分支的代码重新执行,发现没问题,但偏偏生产有问题,后面给订单号加上唯一索引 在生产重新跑了一遍,结果日志显示,报错原因都是重复的订单号,因为前面加了唯一索引约束了.这里至少证明不是代码bug引起的了:突然想起,…
最近做一个活动,需要用到定时任务,于是使用了 node-schedule 库. 用法很简单,就是可配置开始.结束时间,以及重复执行的时间点,如下所示,从2020-12-23T09:00:00Z开始,每10分钟执行一次,直至2020-12-23T09:30:30Z结束. schedule.scheduleJob({ start: '2020-12-23T09:00:00Z', end: '2020-12-23T09:30:30Z', rule: '* */10 * * * *' }, test);…
最近监控线上日志,网站是ASP.NET MVC 开发的,发现不少错误日志都记录同样的内容: The view 'Error' or its master was not found or no view engine supports the searched locations. The following locations were searched: ~/Views/Search/Error.aspx ~/Views/Search/Error.ascx ~/Views/Shared/Er…
date: 2018-04-19 21:00 tag: java,mysql,exception,mat,调试,jvm 工具: gceasy.io, MAT 线上系统出现一个诡异的bug,通过heap dump分析 分析: 通过日志确认系统在一天前就已经停止运行 代码较简单应该不存在DB写入操作死锁 mysql操作不是特别频繁 定位: 使用jmap -dump导出线上的应用的heap dump jstack 导出堆栈信息 分析jstack发现多个Thread在DB写入时在等待同一把锁 通过MAT…
前提:本文方法是利用Linux的crontab定时任务来协助实现Laravel调度(Mac也一样). 一.首先添加Crontab定时任务,这里只做简单介绍. 用命令crontab -e 添加如下内容 * * * * * /usr/local/bin/php /usr/local/var/www/projectName/artisan schedule:run >> /dev/null 2>&1 1 2 如图: 上面命令Crontab会每分钟去调Laravel的schedule命令…
Step 1:前提是linux服务器安装了crond 定时任务需要crond服务的支持 1.启动方法 service crond restart 2.该服务默认是开机启动的 取消定时任务 1.全部取消 crontab -r 2.取消某个 crontab -e 配置文件,删除要取消的哪一行配置 查看目前都有那些定时任务 crontab -l Step 2: 编写bash脚本,比如一个简单的脚本 #!/bin/bash time=$(date "+%Y%m%d:%H-%M-%S") ech…
目标:每天晚上凌晨一点钟左右把昨天的任务给它切掉,把昨天的日志给它改个名存起来,根据昨天的时间给它改个名存起来,所以要根据日期生成文件名. 也许你不会写bash脚本,但是老师带着你一步一步地来. shell脚本比php简单很多,主要记住它的变量如何声明就搞定了,其他没什么. 声明你的LOGPATH在哪,因为要备份你所以得把你的路径搞清楚. 主要的工作:把LOGPATH下的这个玩意给它重命名,拿日期重命名,拿年月日重命名会导致一个问题:得等到今天晚上十二点才能看到它日志切割的效果.这可不太妙,好在…
首先是容器 log对应的是application这个容器 首先我们查看如何获取这个日志类,我们来到\storage\app.php中找到application这个容器,点进去, 我们来到了 点击这个跳转后,我们会发现了日志服务提供者,点进去 我们就会找到这个类 logserviceprovider这个类 我们就会发现绑定的字符串为log,通过这个绑定到容器中. 我们接着写 我们来到控制台,找到日志文件\storage\logs\laravel.log 打印发现有了 如何应用依赖注入呐 在\sto…
背景介绍 公司需要实现X分钟内每隔Y秒轮训某个接口,Linux自带的crontab貌似只精确到分钟,虽然可以到精确到秒,但是并不满足需求. 选型 公司项目都是 基于 Laravel 框架,所以这个没得选.守护进程用的 supervisor,看看这个家伙能不能满足我们的需求 代码 namespace App\Console\Commands; use Illuminate\Console\Command; use Cache; use Carbon\Carbon; class TaskComman…
背景 集群运行一段时间(大概一月多)后,cloudera manager管理界面出现爆红,爆红的组件有hdfs.zookeeper. 发现问题 点击详细内容查看,报日志空间不够的错误.初步判断是各个组件的日志数据把空间占满了. 查看各个目录下磁盘占用情况 df -h cdh的各组件的日志一般在/var/log目录下,因此主要关注“/” 查看/var/log下使用空间较大的文件夹,并由大到小排列 cd /var/log/ du -s ./* | sort -nr 还有一个是 Cloudera Ma…
https://www.jianshu.com/p/f6b94596098e 关于laravel发送邮件,请先参考我的另一片文章:laravel sendcloud发送邮件,再继续往下看. 1.用database队列驱动,生成创建这些表的迁移 php artisan queue:table php artisan migrate 用redis 队列驱动需要在配置文件 config/database.php 中配置 Redis 数据库连接 2.生成任务类 php artisan make:job…
修改默认日志位置 我们平常的开发中可能一直把laravel的日志文件放在默认位置不会有什么影响,但如果我们的项目上线时是全量部署,每次部署都是git中最新的代码,那这个时候每次都会清空我们的日志,显示这不是我们所期望的,好在laravel有提供我们修改的方法. 我们这里以放在/var/log/nginx/app/phphub/phphub.log为例 增加日志处理类# 首先我们新建文件,app/Foundation/Bootstrap/ConfigureLogging.php,代码如下: <?p…
一.crontab未执行 crontab里面设置定时任务如下: 1 19 * * * /usr/bin/python3 /home/nola/a.py > /home/nola/logs/a_logs_$(date).log 2>&1 问题:存放log日志的logs目录没有权限,更改logs目录为777权限 二.crontab未按当前日期生成日志文件 date显示的时间格式如下: 生成日志文件为:a_logs_2019年 09月 02日 星期一 19:37:01 CST.log 因此自…
一.发现问题 在一次系统上线后,我们发现某几个节点在长时间运行后会出现CPU持续飙升的问题,导致的结果就是Kubernetes集群的这个节点会把所在的Pod进行驱逐(调度):如果调度到同样问题的节点上,也会出现Pod一直起不来的问题.我们尝试了杀死Pod后手动调度的办法(label),当然也可以排除调度节点.但是在一段时间后还会复现,我们通过监控系统也排查了这段时间的流量情况,但应该和CPU持续占用没有关联,这时我们意识到这可能是程序的问题. 二.排查问题 定位Pod 这里使用kubectl t…
前言 zabbix-server昨天出了个问题,不停的重启.昨天摆弄到晚上也不搞清楚原因,按照网上说的各种操作,各种CacheSize.TimeOut.StartPollers都改了,还有什么Include的日志也不贴说个丢,,,想着今天一早来处理下,结果出了生产事故. 刚好最近超融合不稳定,凌晨的时候,生产环境有台服务器(注册中心和配置中心)无故重启,然后导致一系列的问题,这个不在这里赘述,来讲一下zabbix这个事吧. 环境 CentOS Linux release 7.6.1810 (Co…
最近排查一个bug,发现了一系列有意思的东西,对「自定义线程池」.「Jetty线程模型」都有了一些新的认识. 本文预计阅读时间10分钟,包括: 问题表现 常见原因筛查 根因与源码分析 最佳实践 一些小TIPS 1.问题表现 预发环境偶发请求失败异常,服务端显示错误信息为: Required String parameter 'seriesbaid' is not present 对应controller的api为 @PostMapping public Object getUserParamet…