启动Nginx失败为啥?
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了启动Nginx失败为啥?相关的知识,希望对你有一定的参考价值。
nginx服务有时启动失败,原因是80端口为其它应用程序占用了,这时,需要查看是哪个程序占用了它,可能是IIS的某个站点,或者Tomat,Apache等,都有可能,所以,需要查看一下电脑80端口的使用情况,使用下面命令: netstat -aon|findstr “:80″
这时,并没有看到本机有被PID为4的进程占用,在任务管理器里找到了它;
关闭80端后,再运行我们的nginx服务。 另外,需要知道的nginx三个主要的命令: 启动服务:start nginx 停止服务:nginx -s stop 重新加载:nginx -s reload(配置文件被修改后需要执行它),即可。
参考技术ANginx服务启动失败的原因是80端口为其它应用程序占用了。
要查一下电脑端口的使用情况,使用netstat -aon|findstr “:80″命令关闭所占用的端口。
Nginx (engine x) 是一个高性能的HTTP和反向代理服务器,也是一个IMAP/POP3/SMTP服务器。Nginx是由伊戈尔·赛索耶夫为俄罗斯访问量第二的Rambler.ru站点开发的,第一个公开版本0.1.0发布于2004年10月4日。
参考技术B两种可能:
一种是你的nginx太过繁忙,进行没有关闭,所以新的无法启动。你可以ps axu| grep nginx 看一下是不是还有nginx进程运行,如果还不行的话,只能kill强行终止再启动。
另一种就是你的nginx配置错误,你可以用./nginx -t 检查一下nginx配置是否正确,如果有错误,根据提示进行修改就可以了。
参考技术CNginx服务有时起动不了了,原因是80端口为其它应用程序占用了,这时,我们需要查看是哪个程序占用了它,可能是IIS的某个站点,或者Tomat,Apache等,都有可能,所以,我们需要查看一下电脑80端口的使用情况,使用下面命令:
netstat -aon|findstr “:80″这时,我们并没有看到本机有被PID为4的进程占用,在任务管理器里找到了它,关闭80端后,再运行我们的nginx服务。
另外,我们需要知道的nginx三个主要的命令:启动服务:start nginx,停止服务:nginx -s stop,重新加载:nginx -s reload(配置文件被修改后需要执行它)。
为啥启动 StreamingContext 失败并显示“IllegalArgumentException:需求失败:未注册输出操作,因此没有可执行的操作”?
【中文标题】为啥启动 StreamingContext 失败并显示“IllegalArgumentException:需求失败:未注册输出操作,因此没有可执行的操作”?【英文标题】:Why does starting StreamingContext fail with “IllegalArgumentException: requirement failed: No output operations registered, so nothing to execute”?为什么启动 StreamingContext 失败并显示“IllegalArgumentException:需求失败:未注册输出操作,因此没有可执行的操作”? 【发布时间】:2014-08-22 13:37:54 【问题描述】:我正在尝试使用 Twitter 作为源执行 Spark Streaming 示例,如下所示:
public static void main (String.. args)
SparkConf conf = new SparkConf().setAppName("Spark_Streaming_Twitter").setMaster("local");
JavaSparkContext sc = new JavaSparkContext(conf);
JavaStreamingContext jssc = new JavaStreamingContext(sc, new Duration(2));
JavaSQLContext sqlCtx = new JavaSQLContext(sc);
String[] filters = new String[] "soccer";
JavaReceiverInputDStream<Status> receiverStream = TwitterUtils.createStream(jssc,filters);
jssc.start();
jssc.awaitTermination();
但我遇到了以下异常
Exception in thread "main" java.lang.AssertionError: assertion failed: No output streams registered, so nothing to execute
at scala.Predef$.assert(Predef.scala:179)
at org.apache.spark.streaming.DStreamGraph.validate(DStreamGraph.scala:158)
at org.apache.spark.streaming.StreamingContext.validate(StreamingContext.scala:416)
at org.apache.spark.streaming.StreamingContext.start(StreamingContext.scala:437)
at org.apache.spark.streaming.api.java.JavaStreamingContext.start(JavaStreamingContext.scala:501)
at org.learning.spark.TwitterStreamSpark.main(TwitterStreamSpark.java:53)
有什么建议可以解决这个问题吗?
【问题讨论】:
你没有对流做任何事情,只是对它执行一个操作,你很好去 【参考方案1】:当调用输出运算符时,它会触发计算 流。
如果 DStream 上没有输出运算符,则不会调用任何计算。基本上你需要在流上调用以下任何方法
print()
foreachRDD(func)
saveAsObjectFiles(prefix, [suffix])
saveAsTextFiles(prefix, [suffix])
saveAsHadoopFiles(prefix, [suffix])
http://spark.apache.org/docs/latest/streaming-programming-guide.html#output-operations
如果需要,您也可以先应用任何转换,然后再输出函数。
【讨论】:
【参考方案2】:线程“main”java.lang.AssertionError 中的异常:断言失败:未注册输出流,因此没有可执行的操作
TL;DR 使用可用的output operators 之一,例如print
、saveAsTextFiles
或foreachRDD
(或较少使用的saveAsObjectFiles
或saveAsHadoopFiles
)。
换句话说,您必须在代码的以下几行之间使用输出运算符:
JavaReceiverInputDStream<Status> receiverStream = TwitterUtils.createStream(jssc,filters);
// --> The output operator here <--
jssc.start();
引用 Spark 官方文档的 Output Operations on DStreams(突出显示我的):
输出操作允许将 DStream 的数据推送到外部系统,如数据库或文件系统。由于输出操作实际上允许外部系统使用转换后的数据,因此它们触发所有 DStream 转换的实际执行(类似于 RDD 的操作)。
关键是如果没有输出操作符,你就“没有注册输出流,所以没有什么可以执行”。
正如一位评论者所注意到的,您必须使用输出转换,例如print
或 foreachRDD
,在启动 StreamingContext
之前。
在内部,每当您使用可用的输出运算符之一时,例如print
或foreach
,DStreamGraph
被请求到add an output stream。
你可以在new ForEachDStream is created and registered之后找到注册(正好是add it as an output stream)。
【讨论】:
【参考方案3】:它也 -错误地- 未能指责此问题,但 真正的原因是流式传输的幻灯片窗口持续时间之间的非多个数字输入和 RDD 时间窗口。 它只记录一个警告:你修复它,上下文停止失败:D
【讨论】:
以上是关于启动Nginx失败为啥?的主要内容,如果未能解决你的问题,请参考以下文章