blkid命令获取文件系统类型、UUID及挂载
在Linux下可以使用blkid命令对查询设备上所采用文件系统类型进行查询。blkid主要用来对系统的块设备(包括交换分区)所使用的文件系统类型、LABEL、UUID等信息进行查询。要使用这个命令必须安装e2fsprogs软件包。
微软云azure上推荐使用UUID写入/etc/fstab
空杯心态,勿忘初心;但行好事,莫问前程。
在Linux下可以使用blkid命令对查询设备上所采用文件系统类型进行查询。blkid主要用来对系统的块设备(包括交换分区)所使用的文件系统类型、LABEL、UUID等信息进行查询。要使用这个命令必须安装e2fsprogs软件包。
微软云azure上推荐使用UUID写入/etc/fstab
一、PPTP、L2TP、OpenVPN三种隧道协议的概念
1、PPTP(Point to Point Tunneling Protocol,点对点隧道协议)默认端口号:1723
PPTP,即PPTF协议。该协议是在PPP协议的基础上开发的一种新的增强型安全协议,支持多协议虚拟专用网(VPN),可以通过密码身份验证协议 (PAP)、可扩展身份验证协议(EAP)等方法增强安全性。可以使远程用户通过拨入ISP、通过直接连接Internet或其他网络安全地访问企业网。
nginx参数:
--prefix= 指向安装目录
--sbin-path 指向(执行)程序文件(nginx)
--conf-path= 指向配置文件(nginx.conf)
--error-log-path= 指向错误日志目录
--pid-path= 指向pid文件(nginx.pid)
--lock-path= 指向lock文件(nginx.lock)(安装文件锁定,防止安装文件被别人利用,或自己误操作。)
--user= 指定程序运行时的非特权用户
--group= 指定程序运行时的非特权用户组
--builddir= 指向编译目录
官方文档地址:http://nginx.org/en/docs/http/ngx_http_uwsgi_module.html
ngx_http_uwsgi_module模块允许把请求传递给uwsgi服务器。
配置示例:
location / {
include uwsgi_params;
uwsgi_pass localhost:9000;
}
uwsgi_bind address | off;
nginx所在的服务器可能有多个ip地址,uwsgi_bind指令用于设置nginx向后端的uwsgi服务器发起请求的时候,所使用的ip地址;如果没有指定的话,操作系统会自动委派一个本地的ip地址,向后端uwsgi服务器发起请求。
web_app.py
#!/usr/bin/python
def application(env, start_response):
start_response('200 OK', [('Content_Type', 'text/html')])
return "Congraduation!!! uWSGI Testing OK!!!"
以uwsgi方式启动
uwsgi -s :8080 --wsgi-file web_app.py -M -p 20
配置风格的简单介绍
当使用某一种配置风格或者将一种风格转换另一个风格时,需要注意一下规则:
参考文档:http://uwsgi-docs-zh.readthedocs.io/zh_CN/latest/
命令行参数(command line args):需要给选项增加“--”前缀
例如socket选项:
--socket <path/address>
环境变量(environment variable):选项名都要换成大写,并且加上“UWSGI_”前缀,所有原来选项名中的“-”都要换成下划线“_”
WSGI是什么?
WSGI,全称 Web Server Gateway Interface,或者 Python Web Server Gateway Interface ,是为 Python 语言定义的 Web 服务器和 Web 应用程序或框架之间的一种简单而通用的接口。自从 WSGI 被开发出来以后,许多其它语言中也出现了类似接口。
WSGI 的官方定义是,the Python Web Server Gateway Interface。从名字就可以看出来,这东西是一个Gateway,也就是网关。网关的作用就是在协议之间进行转换。
import MySQLdb的时候报错“ImportError: libmysqlclient.so.20: cannot open shared object file: No such file or directory”
解决方法:
找到libmysqlclient.so.20,一般都在mysql安装目录/lib库里,做个软链接即可。
ln -s /usr/local/mysql/lib/libmysqlclient.so.20 /usr/lib64/libmysqlclient.so.20 #64为系统
ln -s /usr/local/mysql/lib/libmysqlclient.so.20 /usr/lib/libmysqlclient.so.20 #32位系统
春天到了,阳光不错,适合去郊游,在松江某城乡结合部,看到一片油菜花,令人眼前一亮;路遇一老年捷安特骑行队,年龄很大,但是精神劲很足^o^
MySQL5.x都可以用这个方法,特此记录下:
修改my.cnf配置文件,在[mysqld]的段中加上一句:skip-grant-tables,如下:
[mysqld]
skip-grant-tables
保存my.cnf,重启MySQL服务systemctl restart mysqld
即可无密码直接登录,开始设置新密码:
登陆并修改密码
SDCC-2017上海站在2017年3月17-19日在上海宝丰联大酒店隆重开幕,运维、数据库、架构师各路大牛汇集了不少,由于17日是周五,还得上班没法过去错过了运维专场稍遗憾,在此感谢春哥的报名优惠码^o^
三天时间人很多,每场约莫400+人,比IT168搞的那些分享交流会人多多了;当然基本90%是纯爷们,妹子很少运维、DBA、开发这三个职位里面,那个里面妹子都很少吧^o^,印象比较深的有两个片段:一是携程的姜宇祥编写代码17年、数据库研究开发12年,应该是70后吧,这个比较汗颜,敲代码这么些年也能耐得住寂寞,佩服;另外一个是京东者文明在分享京东物流系统高可用架构实践完毕以后,一位头发都灰白了的IT从业者问他一个数据库分库分表以后,ID统计的问题,这位估计年龄有快50了吧,没有也差不多了,还在研究技术,这心态真是令人敬佩;
Centos7.3安装的是minimal最小化版本,首先安装基础必需的软件包:
yum install gcc gcc-c++ gcc-g77 make autoconf automake ncurses ncurses-devel openssl openssl-devel cmake -y
yum install net-tools unzip vim lrzsz wget sysstat -y 此为常用工具,可以不安装
yum update -y
下载MySQL5.7.17安装包,安装包都放在/soft目录下:
按 Escape进入命令模式,然后输入 :start,endw file,其中的 start 是当前文件中要保存的第一行,end 是要保存的最后一行,w 表示希望写到另一个文件中(或者覆盖现有的文件),file 是指定的部分要保存到的文件。对于最后一行,可以使用 $ 表示文件的末尾。可以在 w 后面使用两个大于号(>>)表示希望把内容附加到文件中而不是覆盖文件。
举例:
vim 打开data.csv文件,按esc,切换到命令模式,截取第2到200行到新文件test.csv中:
国内外vps主机提供商所提供的主机大多是基于Xen、OpenVZ、KVM、Hyper-V、VMWare五种虚拟化技术。
一、Xen 官网:http://xen.org/
Xen 由剑桥大学开发,它是基于硬件的完全分割,物理上有多少的资源就只能分配多少资源,因此很难超售。可分为Xen-PV(半虚拟化),和Xen-HVM(全虚拟化)。
Xen是不能超售内存和硬盘的,当母服务器只有16G内存以及100G硬盘时,当开Xen架构(任意一个虚拟化)的1G内存、25G硬盘的子机时,会直接占用服务器1G内存,以及25G硬盘,所以Xen的性能,相比OpenVZ在超售的情况下要好。
故障表现:使用xshell或SecureCRT工具连接Linux服务器时报connection closed by foreign host.
修改配置文件
/etc/ssh/sshd_config
去掉注释
ClientAliveInterval 60
ClientAliveCountMax 3
然后重启 sshd 服务
在mysql命令行下执行以下sql语句:
mysql>select * from user limit 10 into outfile '/tmp/test.xls'; 查询user表中前10条记录,导出到/tmp/test.xls文件中
linux系统尽量导出在/tmp目录下,不会出现读写权限问题
如果记录里面有中文,excel打开的时候会出现乱码,
Jenkins日志大量报错信息如下:
三月 09, 2017 2:23:43 下午 hudson.WebAppMain$3 run
信息: Jenkins is fully up and running
三月 09, 2017 2:28:28 下午 javax.jmdns.impl.DNSIncoming readAnswer
警告: There was an OPT answer. Not currently handled. Option code: 65002 data: 143856793D7BF6F6
三月 09, 2017 2:28:28 下午 javax.jmdns.impl.DNSIncoming readAnswer
警告: There was an OPT answer. Not currently handled. Option code: 65002 data: 143856793D7BF6F6
三月 09, 2017 2:28:29 下午 javax.jmdns.impl.DNSIncoming readAnswer
警告: There was an OPT answer. Not currently handled. Option code: 65002 data: 143856793D7BF6F6
三月 09, 2017 2:28:29 下午 javax.jmdns.impl.DNSIncoming readAnswer
警告: There was an OPT answer. Not currently handled. Option code: 65002 data: 143856793D7BF6F6
三月 09, 2017 2:28:29 下午 javax.jmdns.impl.DNSIncoming readAnswer
警告: There was an OPT answer. Not currently handled. Option code: 65002 data: 143856793D7BF6F6
三月 09, 2017 2:28:29 下午 javax.jmdns.impl.DNSIncoming readAnswer
警告: There was an OPT answer. Not currently handled. Option code: 65002 data: 143856793D7BF6F6
三月 09, 2017 2:28:30 下午 javax.jmdns.impl.DNSIncoming readAnswer
其实为jenkins低版本的一个bug,Hudson 1.x旧版本使用jmDNS(http://jmdns.sourceforge.net/)多播(multicast),但是从Hudson 2.0.0版本后已经不使用了。如果硬盘小的很,很快会撑满 ,解决方法如下:
如果是在tomcat下面部署的直接在/tomcat//bin/catalina.sh 文件里面的JAVA_OPTS的参数里面追加:
-Dhudson.DNSMultiCast.disabled=true -Dhudson.udp=-1
如下图
jenkins在迁移以后,目录文件结构发生变化,在启动和发布工程的时候,可能会出现大量的报错:
三月 09, 2017 11:23:19 上午 jenkins.model.PeepholePermalink updateCache
警告: Failed to update hudson.maven.MavenModuleSet@58d2077a[y1.6.yueworld-即时通讯(im_service)] lastFailedBuild permalink for y1.6.yueworld-即时通讯(im_service) #126
java.nio.file.DirectoryNotEmptyException: /file/.jenkins/jobs/y1.6.yueworld-即时通讯(im_service)/builds/lastFailedBuild
at sun.nio.fs.UnixFileSystemProvider.implDelete(UnixFileSystemProvider.java:242)
at sun.nio.fs.AbstractFileSystemProvider.delete(AbstractFileSystemProvider.java:103)
at java.nio.file.Files.delete(Files.java:1077)
at sun.reflect.GeneratedMethodAccessor33.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:606)
at hudson.Util.deleteFile(Util.java:255)
at hudson.util.AtomicFileWriter.commit(AtomicFileWriter.java:113)
at jenkins.model.PeepholePermalink.writeSymlink(PeepholePermalink.java:200)
at jenkins.model.PeepholePermalink.updateCache(PeepholePermalink.java:150)
at jenkins.model.PeepholePermalink.resolve(PeepholePermalink.java:122)
at hudson.model.Job.getLastFailedBuild(Job.java:952)
at sun.reflect.GeneratedMethodAccessor113.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:606)
at org.apache.commons.jexl.util.PropertyExecutor.execute(PropertyExecutor.java:125)
at org.apache.commons.jexl.util.introspection.UberspectImpl$VelGetterImpl.invoke(UberspectImpl.java:314)
at org.apache.commons.jexl.parser.ASTArrayAccess.evaluateExpr(ASTArrayAccess.java:185)
at org.apache.commons.jexl.parser.ASTIdentifier.execute(ASTIdentifier.java:75)
at org.apache.commons.jexl.parser.ASTReference.execute(ASTReference.java:83)
at org.apache.commons.jexl.parser.ASTReference.value(ASTReference.java:57)
at org.apache.commons.jexl.parser.ASTReferenceExpression.value(ASTReferenceExpression.java:51)
at org.apache.commons.jexl.ExpressionImpl.evaluate(ExpressionImpl.java:80)
at hudson.ExpressionFactory2$JexlExpression.evaluate(ExpressionFactory2.java:74)
at org.apache.commons.jelly.tags.core.CoreTagLibrary$3.run(CoreTagLibrary.java:134)
at org.apache.commons.jelly.impl.ScriptBlock.run(ScriptBlock.java:95)
at org.apache.commons.jelly.tags.core.CoreTagLibrary$2.run(CoreTagLibrary.java:105)
at org.kohsuke.stapler.jelly.JellyViewScript.run(JellyViewScript.java:95)
at org.kohsuke.stapler.jelly.IncludeTag.doTag(IncludeTag.java:147)
at org.apache.commons.jelly.impl.TagScript.run(TagScript.java:269)
at org.apache.commons.jelly.TagSupport.invokeBody(TagSupport.java:161)
at org.apache.commons.jelly.tags.core.ForEachTag.doTag(ForEachTag.java:150)
at org.apache.commons.jelly.impl.TagScript.run(TagScript.java:269)
at org.apache.commons.jelly.impl.ScriptBlock.run(ScriptBlock.java:95)
at org.kohsuke.stapler.jelly.ReallyStaticTagLibrary$1.run(ReallyStaticTagLibrary.java:99)
at org.apache.commons.jelly.tags.core.CoreTagLibrary$2.run(CoreTagLibrary.java:105)
at org.kohsuke.stapler.jelly.CallTagLibScript.run(CallTagLibScript.java:120)
at org.apache.commons.jelly.impl.ScriptBlock.run(ScriptBlock.java:95)
at org.apache.commons.jelly.TagSupport.invokeBody(TagSupport.java:161)
at org.apache.commons.jelly.tags.core.ForEachTag.doTag(ForEachTag.java:150)
at org.apache.commons.jelly.impl.TagScript.run(TagScript.java:269)
at org.apache.commons.jelly.impl.ScriptBlock.run(ScriptBlock.java:95)
at org.kohsuke.stapler.jelly.ReallyStaticTagLibrary$1.run(ReallyStaticTagLibrary.java:99)
at org.kohsuke.stapler.jelly.ReallyStaticTagLibrary$1.run(ReallyStaticTagLibrary.java:99)
at org.apache.commons.jelly.impl.ScriptBlock.run(ScriptBlock.java:95)
at org.apache.commons.jelly.tags.core.CoreTagLibrary$1.run(CoreTagLibrary.java:98)
at org.apache.commons.jelly.impl.ScriptBlock.run(ScriptBlock.java:95)
at org.kohsuke.stapler.jelly.ReallyStaticTagLibrary$1.run(ReallyStaticTagLibrary.java:99)
at org.apache.commons.jelly.impl.ScriptBlock.run(ScriptBlock.java:95)
at org.apache.commons.jelly.tags.core.CoreTagLibrary$2.run(CoreTagLibrary.java:105)
at org.kohsuke.stapler.jelly.CallTagLibScript.run(CallTagLibScript.java:120)
at org.kohsuke.stapler.jelly.groovy.JellyBuilder.doInvokeMethod(JellyBuilder.java:276)
at org.kohsuke.stapler.jelly.groovy.Namespace$ProxyImpl.invoke(Namespace.java:92)
at com.sun.proxy.$Proxy57.projectView(Unknown Source)
at lib.JenkinsTagLib$projectView.call(Unknown Source)
at hudson.model.View.main.run(main.groovy:14)
at org.kohsuke.stapler.jelly.groovy.GroovierJellyScript.run(GroovierJellyScript.java:74)
at org.kohsuke.stapler.jelly.groovy.GroovierJellyScript.run(GroovierJellyScript.java:62)
at org.kohsuke.stapler.jelly.IncludeTag.doTag(IncludeTag.java:147)
at org.apache.commons.jelly.impl.TagScript.run(TagScript.java:269)
at org.apache.commons.jelly.impl.ScriptBlock.run(ScriptBlock.java:95)
at org.kohsuke.stapler.jelly.CallTagLibScript$1.run(CallTagLibScript.java:99)
at org.apache.commons.jelly.tags.define.InvokeBodyTag.doTag(InvokeBodyTag.java:91)
at org.apache.commons.jelly.impl.TagScript.run(TagScript.java:269)
at org.apache.commons.jelly.impl.ScriptBlock.run(ScriptBlock.java:95)
at org.apache.commons.jelly.tags.core.CoreTagLibrary$1.run(CoreTagLibrary.java:98)
at org.apache.commons.jelly.impl.ScriptBlock.run(ScriptBlock.java:95)
at org.apache.commons.jelly.tags.core.CoreTagLibrary$2.run(CoreTagLibrary.java:105)
at org.kohsuke.stapler.jelly.CallTagLibScript.run(CallTagLibScript.java:120)
at org.apache.commons.jelly.impl.ScriptBlock.run(ScriptBlock.java:95)
at org.kohsuke.stapler.jelly.CallTagLibScript$1.run(CallTagLibScript.java:99)
at org.apache.commons.jelly.tags.define.InvokeBodyTag.doTag(InvokeBodyTag.java:91)
at org.apache.commons.jelly.impl.TagScript.run(TagScript.java:269)
at org.apache.commons.jelly.impl.ScriptBlock.run(ScriptBlock.java:95)
at org.kohsuke.stapler.jelly.ReallyStaticTagLibrary$1.run(ReallyStaticTagLibrary.java:99)
at org.apache.commons.jelly.impl.ScriptBlock.run(ScriptBlock.java:95)
at org.kohsuke.stapler.jelly.ReallyStaticTagLibrary$1.run(ReallyStaticTagLibrary.java:99)
at org.apache.commons.jelly.impl.ScriptBlock.run(ScriptBlock.java:95)
at org.kohsuke.stapler.jelly.ReallyStaticTagLibrary$1.run(ReallyStaticTagLibrary.java:99)
at org.apache.commons.jelly.impl.ScriptBlock.run(ScriptBlock.java:95)
at org.kohsuke.stapler.jelly.ReallyStaticTagLibrary$1.run(ReallyStaticTagLibrary.java:99)
at org.apache.commons.jelly.impl.ScriptBlock.run(ScriptBlock.java:95)
at org.apache.commons.jelly.tags.core.CoreTagLibrary$2.run(CoreTagLibrary.java:105)
at org.kohsuke.stapler.jelly.CallTagLibScript.run(CallTagLibScript.java:120)
at org.kohsuke.stapler.jelly.CompressTag.doTag(CompressTag.java:44)
at org.apache.commons.jelly.impl.TagScript.run(TagScript.java:269)
at org.kohsuke.stapler.jelly.JellyViewScript.run(JellyViewScript.java:95)
at org.kohsuke.stapler.jelly.DefaultScriptInvoker.invokeScript(DefaultScriptInvoker.java:63)
at org.kohsuke.stapler.jelly.DefaultScriptInvoker.invokeScript(DefaultScriptInvoker.java:53)
at org.kohsuke.stapler.jelly.JellyClassTearOff.serveIndexJelly(JellyClassTearOff.java:112)
at org.kohsuke.stapler.jelly.JellyFacet.handleIndexRequest(JellyFacet.java:127)
at org.kohsuke.stapler.Stapler.tryInvoke(Stapler.java:735)
at org.kohsuke.stapler.Stapler.invoke(Stapler.java:876)
at org.kohsuke.stapler.Stapler.tryInvoke(Stapler.java:813)
at org.kohsuke.stapler.Stapler.invoke(Stapler.java:876)
at org.kohsuke.stapler.Stapler.invoke(Stapler.java:649)
at org.kohsuke.stapler.Stapler.service(Stapler.java:238)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:728)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:305)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
at hudson.util.PluginServletFilter$1.doFilter(PluginServletFilter.java:135)
at hudson.util.PluginServletFilter.doFilter(PluginServletFilter.java:126)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:243)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
at hudson.security.csrf.CrumbFilter.doFilter(CrumbFilter.java:49)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:243)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
at hudson.security.ChainedServletFilter$1.doFilter(ChainedServletFilter.java:84)
at hudson.security.UnwrapSecurityExceptionFilter.doFilter(UnwrapSecurityExceptionFilter.java:51)
at hudson.security.ChainedServletFilter$1.doFilter(ChainedServletFilter.java:87)
at jenkins.security.ExceptionTranslationFilter.doFilter(ExceptionTranslationFilter.java:117)
at hudson.security.ChainedServletFilter$1.doFilter(ChainedServletFilter.java:87)
at org.acegisecurity.providers.anonymous.AnonymousProcessingFilter.doFilter(AnonymousProcessingFilter.java:125)
at hudson.security.ChainedServletFilter$1.doFilter(ChainedServletFilter.java:87)
at org.acegisecurity.ui.rememberme.RememberMeProcessingFilter.doFilter(RememberMeProcessingFilter.java:142)
at hudson.security.ChainedServletFilter$1.doFilter(ChainedServletFilter.java:87)
at org.acegisecurity.ui.AbstractProcessingFilter.doFilter(AbstractProcessingFilter.java:271)
at hudson.security.ChainedServletFilter$1.doFilter(ChainedServletFilter.java:87)
at jenkins.security.BasicHeaderProcessor.doFilter(BasicHeaderProcessor.java:93)
at hudson.security.ChainedServletFilter$1.doFilter(ChainedServletFilter.java:87)
at org.acegisecurity.context.HttpSessionContextIntegrationFilter.doFilter(HttpSessionContextIntegrationFilter.java:249)
at hudson.security.HttpSessionContextIntegrationFilter2.doFilter(HttpSessionContextIntegrationFilter2.java:67)
at hudson.security.ChainedServletFilter$1.doFilter(ChainedServletFilter.java:87)
at hudson.security.ChainedServletFilter.doFilter(ChainedServletFilter.java:76)
at hudson.security.HudsonFilter.doFilter(HudsonFilter.java:171)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:243)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
at org.kohsuke.stapler.compression.CompressionFilter.doFilter(CompressionFilter.java:49)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:243)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
at hudson.util.CharacterEncodingFilter.doFilter(CharacterEncodingFilter.java:81)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:243)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
at org.kohsuke.stapler.DiagnosticThreadNameFilter.doFilter(DiagnosticThreadNameFilter.java:30)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:243)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:222)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:123)
at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:581)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:171)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:99)
at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:953)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:118)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:408)
at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1008)
at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:589)
at org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:310)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
at java.lang.Thread.run(Thread.java:745)
三月 09, 2017 11:23:20 上午 jenkins.model.PeepholePermalink updateCache
警告: Failed to update hudson.maven.MavenModuleSet@6e2d345e[y2.4.yueworld-统一认证(sso)] lastFailedBuild permalink for y2.4.yueworld-统一认证(sso) #94
java.nio.file.DirectoryNotEmptyException: /file/.jenkins/jobs/y2.4.yueworld-统一认证(sso)/builds/lastFailedBuild
at sun.nio.fs.UnixFileSystemProvider.implDelete(UnixFileSystemProvider.java:242)
后面的省略.....
如下图:
解决方法如下:
1、确认/etc/hosts文件里面有主机名和本机IP的映射;
2、确认${JENKINS_HOME}变量正确;
3、停止jenkins服务,若是用的tomcat直接停止即可。
4、将${JENKINS_HOME}/jobs目录下的unix符号链接文件如 lastFailedBuild, lastSuccessfulBuild, lastUnsuccessfulBuild, lastStableBuild, lastUnstableBuild 全部删除,记的提前备份jobs目录,执行删除脚本如下:
find ${JENKINS_HOME}/jobs/ -type d \( -name lastFailedBuild -o -name lastSuccessfulBuild -o -name lastUnsuccessfulBuild -o -name lastStableBuild -o -name lastUnstableBuild -o -name lastFailed -o -name lastSuccessful -o -name lastUnsuccessful -o -name lastStable -o -name lastUnstable \) -exec rm -rfv "{}" \;
5、重启tomcat或jinkins服务。
一般对负载均衡的使用是随着网站规模的提升根据不同的阶段来使用不同的技术。具体的应用需求还得具体分析,如果是中小型的Web应用,比如日PV小于1000万,用Nginx就完全可以了;如果机器不少,可以用DNS轮询,LVS所耗费的机器还是比较多的;大型网站或重要的服务,且服务器比较多时,可以考虑用LVS。