转载和积累系列 - 分析服务器日志常用命令

1、查看有多少个IP访问:awk '{print $1}' log_file|sort|uniq|wc -l2、查看某一个页面被访问的次数:grep "/index.php" log_file | wc -l3、查看每一个IP访问了多少个页面:awk '{++S[$1]} END {for (a in S) print a,S[a]}' log_file > log.txtsort -n -t '...
阅读(204) 评论(0)

Nginx源码分析 - 实战篇 - 编写一个挂载到阶段处理的模块

HTTP模块篇,我们讲过Nginx的HTTP阶段处理 《Nginx源码分析 - HTTP模块篇 - ngx_http_core_run_phases函数和HTTP模块的阶段处理PHASE handler》我们代码在《Nginx源码分析 - 实战篇 - 编写一个自定义的模块》的基础上,将定义一个回调函数挂载到HTTP处理的阶段上。先看代码:#include #include #include ...
阅读(794) 评论(0)

Nginx源码分析 - 实战篇 - 编写一个自定义的模块

Nginx源码分析 - 实战篇 - 编写一个自定义的模块...
阅读(332) 评论(0)

Nginx源码分析 - HTTP模块篇 - ngx_http_core_run_phases函数和HTTP模块的阶段处理PHASE handler

上一章我们讲解了HTTP request的解析过程。我们基本知道了Nginx是如何解析HTTP的行和头。这一章我们主要讲解Nginx的阶段处理(PHASE 状态机实现)。阶段处理的概念如何理解,我举个例子:一个HTTP请求过来,除了解析HTTP的行和头外,还需要解析URI的rewrite、接受HTTP BODY中的POST数据、转发给后端JAVA/PHP服务器进行数据处理等等一系列的操作。Ngin...
阅读(494) 评论(0)

Java深入 - jdk8特性

1. 接口提供默认方法Java 8允许我们给接口添加一个非抽象的方法实现,只需要使用 default关键字即可public interface Test { int get(); /* JAVA8 接口默认方法*/ default int getVal(int a) { return a * 2; } } public class Te...
阅读(328) 评论(0)

Nginx源码分析 - HTTP模块篇 - ngx_http_wait_request_handler函数和HTTP Request解析过程

这一章主要讲解read事件的核心处理函数:ngx_http_wait_request_handler和ngx_http_process_request_linengx_http_init_connection 初始化客户端连接从上一章知道,ngx_event_accept第一次建立连接的时候,会调用ngx_http_init_connection初始化一个客户端连接结构:ngx_connectio...
阅读(1118) 评论(0)

Nginx源码分析 - HTTP模块篇 - ngx_http_optimize_servers函数和TCP连接建立过程

上一章,我们讲解了HTTP模块是如何初始化的。这一章节,主要讲解监听套接字初始化函数ngx_http_optimize_servers和Nginx整个连接的过程监听套接字初始化函数ngx_http_optimize_serversngx_http_optimize_servers主要处理Nginx服务的监听套接字/** * ngx_http_optimize_servers:处理Nginx服务的...
阅读(801) 评论(0)

Nginx源码分析 - HTTP模块篇 - ngx_http_block函数和HTTP模块的初始化

前面几章整理了Nginx的事件模块,这一章开始整理HTTP模块。HTTP模块的初始化工作,都在src/http/nginx_http.c 中的ngx_http_block函数中进行的。http模块的配置在看nginx_http_block之前,我们还必须看一下nginx.conf中 HTTP大模块的配置文件,只有理解了HTTP模块的配置,才能更好的理解HTTP模块如何初始化的。配置如下:http...
阅读(627) 评论(0)

Nginx源码分析 - Event事件篇 - epoll事件模块

这一篇主要讲解一下epoll事件模型。Nginx支持多种事件模型:epoll/pool/select/kqueue等。epoll比较常用,我们也比较熟悉。Nginx的epoll事件模块在/event/module/ngx_epoll_module.c...
阅读(1046) 评论(0)

Nginx源码分析 - Event事件篇 - Event模块的进程初始化ngx_event_process_init

前面一篇我们讲解了《Nginx源码分析 - Event事件篇 - Event模块和配置的初始化 》    ,了解了整个Event模块分为:ngx_events_module 事件模块 、ngx_event_core_module 事件核心模块 和 epoll/queue/win32_select事件模型模块这一篇,主要讲解一个重要的函数:ngx_event_process_initEvent事件的...
阅读(1340) 评论(1)

Nginx源码分析 - Event事件篇 - Event模块和配置的初始化

Event的模块和配置的初始化,必须得结合我们讲过的两篇文章:《Nginx源码分析 - 主流程篇 - 模块的初始化》     和  《Nginx源码分析 - 主流程篇 - 解析配置文件》   前面我们讲解了模块的初始化以及核心模块的配置文件的解析。而Event的配置解析会比核心模块解析会复杂一些,但是原理是一样的。Event模块的配置数据结构event事件模块的配置:events {...
阅读(1338) 评论(0)

推荐算法和机器学习系列 - 协同过滤推荐算法和余弦相似性算法

编者按】推荐系统在各种系统中广泛使用,推荐算法则是其中最核心的技术点,InfoQ接下来将会策划系列文章来为读者深入介绍。推荐算法综述分文五个部分,本文作为第一篇,将会简要介绍推荐系统算法的主要种类。其中包括算法的简要描述、典型的输入、不同的细分类型以及其优点和缺点。在第二和第三篇中,我们将会详细介绍这些算法的区别,让你能够深入理解他们的工作原理。注:本文翻译自Building Recommende...
阅读(1483) 评论(1)

推荐算法和机器学习系列 - 推荐算法综述

【编者按】推荐系统在各种系统中广泛使用,推荐算法则是其中最核心的技术点,InfoQ接下来将会策划系列文章来为读者深入介绍。推荐算法综述分文五个部分,本文作为第一篇,将会简要介绍推荐系统算法的主要种类。其中包括算法的简要描述、典型的输入、不同的细分类型以及其优点和缺点。在第二和第三篇中,我们将会详细介绍这些算法的区别,让你能够深入理解他们的工作原理。注:本文翻译自Building Recommend...
阅读(710) 评论(0)

Nginx源码分析 - Event事件篇 - Nginx的Event事件模块概览

前一章,我们讲解了《Nginx源码分析 - 主流程篇 - 多进程的惊群和进程负载均衡处理 》  中实际上已经涉及到了一部分事件模块的概念。细心的可以发现,Nginx的事件都是由nginx_event.c文件中的ngx_process_events_and_timers进程事件分发器这个函数开始的。这一章开始,我们会详细透彻的分析Nginx的event模块。如果你还对网络IO模型不太熟悉的,建议先把...
阅读(1784) 评论(0)

Nginx源码分析 - 主流程篇 - 多进程的惊群和进程负载均衡处理

Linux2.6版本之前还存在对于socket的accept的惊群现象。之后的版本已经解决掉了这个问题。惊群是指多个进程/线程在等待同一资源时,每当资源可用,所有的进程/线程都来竞争资源的现象。Nginx采用的是多进程的模式。假设Linux系统是2.6版本以前,当有一个客户端要连到Nginx服务器上,Nginx的N个进程都会去监听socket的accept的,如果全部的N个进程都对这个客户端的so...
阅读(2217) 评论(1)

Nginx源码分析 - 主流程篇 - 多进程实现

默认情况下,Nginx都是多进程的运行模式。Nginx和Memcached不一样,是多进程的模式。采用多进程模式最大的好处:1. 每个进程的资源独立2. 不需要添加各种繁琐的锁了Nginx多进程实现的流程图...
阅读(1180) 评论(0)

Nginx源码分析 - 主流程篇 - 解析配置文件

Nginx源码中比较重要的一块就是配置文件的解析。一般是解析/usr/local/nginx/conf/nginx.conf文件中的配置信息。前一篇文章,我们介绍了Nginx的模块化。Nginx的功能模块都是通过cycle->modules 模块进行管理的。而每个模块都会有自己的配置文件。...
阅读(2144) 评论(2)

Nginx源码分析 - 主流程篇 - 模块的初始化

Nginx是高度模块化的,各个功能都会封装在模块中。例如core模块、HTTP模块等。也可以自定义模块。这一篇文章主要讲解模块的初始化。后续会有一篇文章教你如何编写Nginx的模块。Nginx实现模块管理的代码主要在:/src/core/ngx_module.c文件中。模块的数据结构结构体ngx_module_s主要用于管理每一个模块的详细信息。而模块的管理,主要放置在Nginx的全局变量cycl...
阅读(2034) 评论(1)

Nginx源码分析 - 主流程篇 - 全局变量cycle初始化

Nginx的大部分初始化工作主要围绕一个类型为ngx_cycle_t类型的全局变量(cycle)展开。本文主要讲解cycle的数据结构以及初始化过程中干了什么事情。 cycle的初始化过程在/src/core/cycle.c文件中。 数据结构 ngx_cycle_t的数据结构 /** * Nginx全局变量cycle */ struct ngx_cycle_s { void...
阅读(1325) 评论(0)

Nginx源码分析 - 主流程篇 - 平滑重启和信号控制

平滑重启 上一篇文章我们分析了Nginx的启动流程。其中ngx_add_inherited_sockets主要用于继承Socket文件句柄。 Nginx有平滑重启的功能,通过平滑重启,可以让用户无感知并且不中断。 #平滑重启 sudo kill -HUP `cat /usr/local/nginx-1.4.7/nginx.pid` 无感知不中断的过程,就需要Nginx继承原先的so...
阅读(1274) 评论(0)
423条 共22页1 2 3 4 5 ... 下一页 尾页
    个人资料
    • 访问:953395次
    • 积分:11771
    • 等级:
    • 排名:第1274名
    • 原创:275篇
    • 转载:148篇
    • 译文:0篇
    • 评论:223条
    博客专栏