vsftpd

vsftpd 是一个 UNIX 类操作系统上运行的服务器的名字,它可以运行在诸如 Linux, BSD, Solaris, HP-UX 以及 IRIX 上面。它支持很多其他的 FTP 服务器不支持的特征。此外,本文还介绍了FTP基本原理,以及FTP用户管理方面的基础知识。 简介 vsftpd 是“very secure FTP daemon”的缩写,安全性是它的一个最大的特点。vsftpd 是一个 UNIX 类操作系统上运行的服务器的名字,它可以运行在诸如 Linux、BSD、Solaris、 HP-UNIX等系统上面,是一个完全免费的、开放源代码的ftp服务器软件,支持很多其他的 FTP 服务器所不支持的特征。比如:非常高的安全性需求、带宽限制、良好的可伸缩性、可创建虚拟用户、支持IPv6、速率高等。 vsftpd是一款在Linux发行版中最受推崇的FTP服务器程序。特点是小巧轻快,安全易用。 在开源操作系统中常用的FTPD套件主要还有ProFTPD、PureFTPd和wuftpd等 特点 ①vsftpd 是以一般身份启动服务,所以对于 Linux 系统的使用权限较低,对于Linux 系统的危害就相对的减低了。此外, vsftpd 亦利用 chroot() 这个函式进行改换根目录的动作,使得系统工具不会被vsftpd 这支服务所误用; ②任何需要具有较高执行权限的 vsftpd 指令均以一支特殊的上层程序( parent process ) 所控制 ,该上层程序享有的较高执行权限功能已经被限制的相当的低,并以不影响Linux 本身的系统为准; ③所有来自 clients 端,想要使用这支上层程序所提供的较高执行权限之vsftpd 指令的需求,均被视为『不可信任的要求』来处理,必需要经过相当程度的身份确认后,方可利用该上层程序的功能。例如chown(), Login 的要求等等动作; ④此外,上面提到的上层程序中,依然使用 chroot() 的功能来限制使用者的执行权限。 配置 vsftpd配置 关于主机的设定值 connect_from_port_20=YES(NO) 还记得 wuftp 那篇文章提到的,关于主动联机的 ftp-data 吗? 这个设定项目在启动主动联机的port 20 咯! listen_port=21 使用的 vsftpd命令通道的 port number 设定,如果您想要使用非 正规的 ftpport,在这个设定项目修改吧! dirmessage_enable=YES(NO) 当使用者进入某个目录时,会显示该目录需要注意的内容,显示的 档案预设是.message ,当然,可以使用底下的设定项目来修订! message_file=.message 当 dirmessage_enable=YES时,可以设定这个项目来让 vsftpd 寻找该档案来显示讯息!您也可以设定其它档名喔! listen=YES(NO) 若设定为YES […]

龙生   30 Jan 2018
View Details

Java中的使用了未经检查或不安全的操作

1.javac -Xlint:unchecked MyMath.java检查不安全的操作 /***************************************************/ MyMath.java:29: 警告: [unchecked] 对作为原始类型ArrayList的成员的add(E)的调用未经过检查 array.add("1"); ^ 其中, E是类型变量: E扩展已在类 ArrayList中声明的Object MyMath.java:30: 警告: [unchecked] 对作为原始类型ArrayList的成员的add(E)的调用未经过检查 array.add("2"); ^ 其中, E是类型变量: E扩展已在类 ArrayList中声明的Object MyMath.java:31: 警告: [unchecked] 对作为原始类型ArrayList的成员的add(E)的调用未经过检查 array.add("3"); ^ 其中, E是类型变量: E扩展已在类 ArrayList中声明的Object MyMath.java:32: 警告: [unchecked] 对作为原始类型ArrayList的成员的add(E)的调用未经过检查 array.add("4"); ^ 其中, E是类型变量: E扩展已在类 ArrayList中声明的Object MyMath.java:33: 警告: [unchecked] 对作为原始类型ArrayList的成员的add(E)的调用未经过检查 array.add("5"); ^ 其中, E是类型变量: E扩展已在类 ArrayList中声明的Object MyMath.java:34: 警告: [unchecked] 对作为原始类型ArrayList的成员的add(E)的调用未经过检查 array.add("6"); ^ 其中, E是类型变量: E扩展已在类 ArrayList中声明的Object MyMath.java:35: 警告: [unchecked] 对作为原始类型ArrayList的成员的add(E)的调用未经过检查 array.add("7"); ^ 其中, E是类型变量: E扩展已在类 ArrayList中声明的Object MyMath.java:37: 警告: [unchecked] 对作为原始类型ArrayList的成员的add(E)的调用未经过检查 array.add(array); ^ 其中, E是类型变量: E扩展已在类 ArrayList中声明的Object MyMath.java:68: 警告: [unchecked] 对作为原始类型ArrayList的成员的set(int,E)的调用未经过检查 […]

龙生   22 Jan 2018
View Details

关闭eclipse对js和xml,json的验证

我们在使用eclipse的时候,每次导入一些js框架有时候编译器会莫名其妙的报错。 最近在用ueditor发现了这么问题,虽然你还是可以运行的,但是有红叉很难受。 这个是eclipse对js的瞎验证问题,直接关闭验证就行了。 打开eclipse: 菜单Window – > Preferences 然后搜索 validation 然后我们再点 Disable All 最后点ok from:http://blog.csdn.net/qq_25448409/article/details/52980995

龙生   20 Jan 2018
View Details

NGINX下PHP-FPM占用内存状态及进程数调整

网站出现500,查看SLOWLOG日志发现如下提示: WARNING: [pool www] seems busy (you may need to increase pm.start_servers, or pm.min/max_spare_servers), spawning 32 children, there are 8 idle, and 58 total children WARNING: [pool www] server reached pm.max_children setting (50), consider raising it 昨天晚上刚改的看来又不够用了! 查看PHP-FPM内存占用的几个有用小命令,记录如下: 1.查看每个FPM的内存占用: ps -ylC php-fpm --sort:rss 当然,在后后面加 | wc -l可查看系统当前FPM总进程数,我的目前在45个左右。 PHP官方的建议设置值: pm.max_children = Total RAM dedicated to the web server / Max child process size 2.查看FPM在你的机子上的平均内存占用: [python] view plain copy ps --no-headers -o "rss,cmd" -C php-fpm | awk '{ sum+=$1 } END { printf ("%d%s\n", sum/NR/1024,"M") }'   from:http://blog.csdn.net/solmyr_biti/article/details/50525021

龙生   19 Jan 2018
View Details

PHP+FPM导致内存耗光的问题

转自:http://blog.csdn.net/zouyongjin/article/details/6642157 nginxphp-fpm配置过程中最大问题是内泄漏出问题:服务器的负载不大,但是内存占用迅速增加,很快吃掉内存接着开始吃交换分区,系统很快挂掉! google了一天,终于发现些有用的东西,其实根据官方的介绍,php-cgi不存在内存泄漏,每个请求完成后php-cgi会回收内存,但是不会释放给操作系统,这样就会导致大量内存被php-cgi占用。 官方的解决办法是降低PHP_FCGI_MAX_REQUESTS的值,我用的是php-fpm,对应的php-fpm.conf中的就是max_requests,该值的意思是发送多少个请求后会重启该线程,我们需要适当降低这个值,用以让php-fpm自动的释放内存,不是大部分网上说的51200等等,实际上还有另一个跟它有关联的值max_children,这个是每次php-fpm会建立多少个进程,这样实际上的内存消耗是max_children*max_requests*每个请求使用内存,根据这个我们可以预估一下内存的使用情况,就不用再写脚本去kill了。 下面其实是重启脚本的过程,并不是什么很严重的事情,但是我们要小心,不是说一直重启就是好的,因为重启会导致cpu的使用率飙升,系统负载巨大,所以还是平衡上面的数据比较重要。 其他解决办法: 1.检查php进程的内存占用,杀掉内存使用超额的进程 一般情况下,如果php-cgi进程占用超过1%的内存,就得考虑一下是否要杀掉它了。因为普通情况下,php-cgi进程一般占用0.2%或以下。 这里提供一个脚本供各位使用,就是放在cron任务里,每分钟执行一次。 使用crontab -e 命令,然后添加如下调度任务 * * * * * /bin/bash /usr/local/script/kill_php_cgi.sh kill_php_cgi.sh脚本如下 #!/bin/sh # This script is used to kill php-cgi process that takes large memory size # If a php-cgi process uses 1% or more memory, then it will be killed. PIDS=ps aux|grep php-cgi|grep -v grep|awk '{if($4>=1)print $2}' for PID in $PIDS do #echo date +%F….%T >> /usr/local/php/logs/phpkill.log #echo $PID >> /usr/local/php/logs/phpkill.log kill -9  $PID done 顺便检查PHP-FPM参数 一般来说,如果设置不当,可能导致fpm出现[WARNING] fpm_children_bury(), line 215: child 20883 (pool default) exited on signal 11 SIGSEGV 之类的错误。 […]

龙生   19 Jan 2018
View Details

php-fpm优化方法详解

php-fpm优化方法 php-fpm存在两种方式,一种是直接开启指定数量的php-fpm进程,不再增加或者减少; 另一种则是开始时开启一定数量的php-fpm进程,当请求量变大时,动态的增加php-fpm进程数到上限,当空闲时自动释放空闲的进程数到一个下限。 这两种不同的执行方式,可以根据服务器的实际需求来进行调整。 要用到的一些参数,分别是pm、pm.max_children、pm.start_servers、pm.min_spare_servers和pm.max_spare_servers。 pm表示使用那种方式,有两个值可以选择,就是static(静态)或者dynamic(动态)。 下面4个参数的意思分别为: pm.max_children:静态方式下开启的php-fpm进程数量,在动态方式下他限定php-fpm的最大进程数(这里要注意pm.max_spare_servers的值只能小于等于pm.max_children) pm.start_servers:动态方式下的起始php-fpm进程数量。 pm.min_spare_servers:动态方式空闲状态下的最小php-fpm进程数量。 pm.max_spare_servers:动态方式空闲状态下的最大php-fpm进程数量。 如果dm设置为static,那么其实只有pm.max_children这个参数生效。系统会开启设置的数量个php-fpm进程。 如果dm设置为dynamic,4个参数都生效。系统会在php-fpm运行开始时启动pm.start_servers个php-fpm进程,然后根据系统的需求动态在pm.min_spare_servers和pm.max_spare_servers之间调整php-fpm进程数。 那么,对于服务器,选择哪种执行方式比较好呢?事实上,跟Apache一样,运行的PHP程序在执行完成后,或多或少会有内存泄露的问题。这也是为什么开始时一个php-fpm进程只占用3M左右内存,运行一段时间后就会上升到20-30M的原因了。(www. 脚本学堂) 所以,动态方式因为会结束掉多余的进程,可以回收释放一些内存,所以推荐在内存较少的服务器或者VPS上使用。具体最大数量根据 内存/20M 得到。 比如说512M的VPS,建议pm.max_spare_servers设置为20(512*0.8/20)。至于pm.min_spare_servers,则建议根据服务器的负载情况来设置,比较合适的值在5~10之间。 然后对于比较大内存的服务器来说,设置为静态的话会提高效率。 因为频繁开关php-fpm进程也会有时滞,所以内存够大的情况下开静态效果会更好。数量也可以根据 内存/30M 得到。 比如说2GB内存的服务器,可以设置为50;4GB内存可以设置为100等。 比如,如果是512M的vps,设置的参数如下: 代码示例: pm=dynamic pm.max_children=20 pm.start_servers=5 pm.min_spare_servers=5 pm.max_spare_servers=20 可以最大的节省内存并提高执行效率。   from:https://www.cnblogs.com/feng18/p/6224638.html

龙生   19 Jan 2018
View Details

Jetty

Jetty 是一个开源的servlet容器,它为基于Java的web容器,例如JSP和servlet提供运行环境。Jetty是使用Java语言编写的,它的API以一组JAR包的形式发布。开发人员可以将Jetty容器实例化成一个对象,可以迅速为一些独立运行(stand-alone)的Java应用提供网络和web连接。 特性 易用性 易用性是 Jetty 设计的基本原则,易用性主要体现在以下几个方面: 通过 XML 或者 API 来对Jetty进行配置;默认配置可以满足大部分的需求;将 Jetty 嵌入到应用程序当中只需要非常少的代码; 可扩展性 在使用了 Ajax 的 Web 2.0 的应用程序中,每个连接需要保持更长的时间,这样线程和内存的消耗量会急剧的增加。这就使得我们担心整个程序会因为单个组件陷入瓶颈而影响整个程序的性能。但是有了 Jetty: 即使在有大量服务请求的情况下,系统的性能也能保持在一个可以接受的状态。利用 Continuation 机制来处理大量的用户请求以及时间比较长的连接。 另外 Jetty 设计了非常良好的接口,因此在 Jetty 的某种实现无法满足用户的需要时,用户可以非常方便地对 Jetty 的某些实现进行修改,使得 Jetty 适用于特殊的应用程序的需求。 易嵌入性 Jetty 设计之初就是作为一个优秀的组件来设计的,这也就意味着 Jetty 可以非常容易的嵌入到应用程序当中而不需要程序为了使用 Jetty 做修改。从某种程度上,你也可以把 Jetty 理解为一个嵌入式的Web服务器。 Jetty 可以作为嵌入式服务器使用,Jetty的运行速度较快,而且是轻量级的,可以在Java中可以从test case中控制其运行。从而可以使自动化测试不再依赖外部环境,顺利实现自动化测试。 和Tomcat的比较 原文地址:Jetty和Tomcat的选择:按场景而定[1] 1)Jetty更轻量级。这是相对Tomcat而言的。 由于Tomcat除了遵循Java Servlet规范之外,自身还扩展了大量JEE特性以满足企业级应用的需求,所以Tomcat是较重量级的,而且配置较Jetty亦复杂许多。但对于大量普通互联网应用而言,并不需要用到Tomcat其他高级特性,所以在这种情况下,使用Tomcat是很浪费资源的。这种劣势放在分布式环境下,更是明显。换成Jetty,每个应用服务器省下那几兆内存,对于大的分布式环境则是节省大量资源。而且,Jetty的轻量级也使其在处理高并发细粒度请求的场景下显得更快速高效。 2)Jetty更灵活,体现在其可插拔性和可扩展性,更易于开发者对Jetty本身进行二次开发,定制一个适合自身需求的Web Server。 相比之下,重量级的Tomcat原本便支持过多特性,要对其瘦身的成本远大于丰富Jetty的成本。用自己的理解,即增肥容易减肥难。 3)然而,当支持大规模企业级应用时,Jetty也许便需要扩展,在这场景下Tomcat便是更优的。 总结:Jetty更满足公有云的分布式环境的需求,而Tomcat更符合企业级环境。 from:https://baike.baidu.com/item/jetty/370234?fr=aladdin

龙生   19 Jan 2018
View Details

Centos 7 查看内存占用情况相关命令

原文出处:http://blog.csdn.net/anxpp/article/details/52453134 本人租用的云服务器,为了节约成本,各项配置都是比较低的,但是又运行了很多的服务,所以要经常查看内存占用情况以检查哪些服务存在问题并调整参数作调优。当然,实际的生成服务器,也可能会需要做些类似的操作的。    1、 top命令 top命令经常用来监控linux的系统状况,比如cpu、内存的使用,程序员基本都知道这个命令。 进入监控界面后按M后可以看到以内存占用大小排序的视图:     2、free -m 使用这个命令可以直接看内存的整个使用情况:     3、ps -e -o 'pid,comm,args,pcpu,rsz,vsz,stime,user,uid' | grep oracle | sort -nrk5 rsz为实际内存占用: 命令的完整用法大家还是度娘吧,这里只是给出方法,够用就好。   from:http://blog.csdn.net/anxpp/article/details/52453134

龙生   17 Jan 2018
View Details

解决 mariadb 在低配 VPS 上启动崩溃的问题

引言 最近博客又抽风了,打开主页后提示 Error Establishing a Database Connection。仔细想想,应该就是数据库服务器 mariadb 挂了;以前也遇到过类似的问题。经过分析日志,并结合网上的资料最终解决了问题。 日志 以下是 mariadb 服务器挂掉时的比较关键的日志信息,从下面的日志信息中,我们可以很容易地看出由于内存不足,从而导致数据库服务器启动时崩溃。

  解决 在使用 free -m 查看内存信息时,发现 swap 分区大小为 0。难怪说数据库服务器无法启动呢,在内存不够用的情况下,又无法使用 swap 分区,自然崩溃了。由于 VPS 使用了 SSD,性能自然不错。下面我们给服务器系统 CentOS 7 添加 1024M 的 swap 分区,采用的方法是创建一个 swap 文件: 使用下面的命令创建 swapfile:

使用下面的命令配置 swap 文件:

接下来,使用下面的命令立即启用 swapfile,这样就不用等到下次重启时自动启用:

最后,我们在 /etc/fstab 中添加下面一行,这样可以在系统下次重启时自动生效创建的 swapfile:

使用 cat /proc/swaps 或 free -m 查看 swapfile 的生效情况,如下图所示: 在完成上面的步骤后,我们还可以在 /etc/my.cnf 配置文件中添加一些配置信息,降低 mariadb 资源需求,具体的配置请参考文末给出的链接。 启动 启动 apache 服务器:systemctl start httpd.service; 启动 mariadb 服务器:systemctl start mariadb.service。 启动完成后,再次打开网站主页,bingo,问题解决了! 总结 低配 VPS 最好还是要多增加 swap 分区大小,尤其对于使用 SSD 的 VPS 而言,swap […]

龙生   17 Jan 2018
View Details

[MySQL]快速解决"is marked as crashed and should be repaired"故障

具体报错如下: Table '.\Tablename\posts' is marked as crashed and should be repaired 提示说论坛的帖子表posts被标记有问题,需要修复。我记得以前也出现过类似的问题,但是只要点击Phpmyadmin上的repair按纽就自动修复了,但是这次很绝,什么都没有.于是赶快上网查找原因。最终将问题解决。解决方法如下: 找到mysql的安装目录的bin/myisamchk工具,在命令行中输入: myisamchk -c -r ../data/tablename/posts.MYI 然后myisamchk 工具会帮助你恢复数据表的索引。好象也不用重新启动mysql,问题就解决了。 问题分析: 1、 错误产生原因,有网友说是频繁查询和更新dede_archives表造成的索引错误,因为我的页面没有静态生成,而是动态页面,因此比较同意这种说法。 还有说法为是MYSQL数据库因为某种原因而受到了损坏,如:数据库服务器突发性的断电、在提在数据库表提供服务时对表的原文件进行某种操作都有可能导致 MYSQL数据库表被损坏而无法读取数据。总之就是因为某些不可测的问题造成表的损坏。 2、问题解决办法。 当你试图修复一个被破坏的表的问题时,有三种修复类型。如果你得到一个错误信息指出一个临时文件不能建立,删除信息所指出的文件并再试一次--这通常是上一次修复操作遗留下来的。 这三种修复方法如下所示: % myisamchk --recover --quick /path/to/tblName % myisamchk --recover /path/to/tblName % myisamchk --safe-recover /path/to/tblName 第一种是最快的,用来修复最普通的问题;而最后一种是最慢的,用来修复一些其它方法所不能修复的问题。 检查和修复MySQL数据文件 如果上面的方法无法修复一个被损坏的表,在你放弃之前,你还可以试试下面这两个技巧: 如 果你怀疑表的索引文件(*.MYI)发生了不可修复的错误,甚至是丢失了这个文件,你可以使用数据文件(*.MYD)和数据格式文件(*.frm)重新生 成它。首先制作一个数据文件(tblName.MYD)的拷贝。重启你的MySQL服务并连接到这个服务上,使用下面的命令删除表的内容: mysql> DELETE FROM tblName; 在 删除表的内容的同时,会建立一个新的索引文件。退出登录并重新关闭服务,然后用你刚才保存的数据文件(tblName.MYD)覆盖新的(空)数据文件。 最后,使用myisamchk执行标准的修复(上面的第二种方法),根据表的数据的内容和表的格式文件重新生成索引数据。 如果你的表的 格式文件(tblName.frm)丢失了或者是发生了不可修复的错误,但是你清楚如何使用相应的CREATE TABLE语句来重新生成这张表,你可以重新生成一个新的.frm文件并和你的数据文件和索引文件(如果索引文件有问题,使用上面的方法重建一个新的)一 起使用。首先制作一个数据和索引文件的拷贝,然后删除原来的文件(删除数据目录下有关这个表的所有记录)。 启动MySQL服务并使用当初的CREATE TABLE文件建立一个新的表。新的.frm文件应该可以正常工作了,但是最好你还是执行一下标准的修复(上面的第二种方法)。     为了不冒失修复,故采取保守做法,我们知道 MySQL 一个高效的管理工具便是 PhpMyAdmin,而在该管理软件中就包含了对表的检查、分析、修复、优化功能,比起网上提供的含糊命令行来说更安全更简便。 通过实践,在使用检查表功能后确实发现了问题,之后使用修复功能进行了修复,反馈结果每个表都已经 ok,再执行一次优化,重新测试访问网站终于恢复了正常。一场灾难就此避免…… from:https://www.cnblogs.com/hakuci/archive/2012/03/20/2407723.html

龙生   16 Jan 2018
View Details
1 215 216 217 419