AWS EC2 实例在移动 NLTK 数据位置后似乎自毁
AWS EC2 instance seemed to self-destruct after moving NLTK data location
所以我构建了一个数据和 NLP 应用程序,它有一个 flask 前端,它在本地运行完美,但是当我试图在 AWS (Ubuntu linux) 上设置它时,出现了大量问题我们被建议做的 Apache 服务器(烧瓶不是为部署而设计的)。使用此设置导入 python 模块突然变得相当困难,在 Whosebug 上有很多关于它的问题。已经解决了大约 5 个这样的问题,在整个代码中每次都使用大量 Python 日志记录语句来查看各种脚本究竟在什么时候崩溃或挂起(没有错误消息)然后它比以往任何时候都更进一步之前和这个关于 NLTK 语料库位置的问题出现了。不是导入好的 NLTK 模块,只是语料库文件夹。
因此,通常只需要以下代码即可:
import nltk
nltk.download()
它打开了一种用户界面,您可以在其中 select 下载哪个语料库或 NLP 项目以及是否更改目录以将其存储在其他地方。默认情况下,它会在您的主目录中创建目录 nltk_data/
并将其放在那里。
所以我起初认为问题是该文件夹需要 Apache 用户的权限 www-data
但那没有用。然后在 Apache 错误日志中注意到它查看了 4 个文件夹但没有找到任何东西 - 其中之一是 /var/www/nltk_data
,其中 none 是它实际所在的主目录。不记得其他 3..
我在 Whosebug (1,2,3,4) 上浏览了几个类似的问题,但决定采用更简单的方法。以下也是:
sudo mkdir /var/www/nltk_data
sudo cp -r nltk_data/ /var/www/
然后我再次刷新Apache日志,重启服务器并开始检查日志。它以通常的速度 运行,花了几分钟来完成脚本,正在重新检查日志,新的日志消息不断出现,然后一些关于内存的消息在 ssh 屏幕上不断重复,日志没有更长可见。我无法输入任何内容。它让我注销,不让我重新登录。进入 AWS 控制台,重新启动它两次。停了,再开,还是登录不上,一怒之下,关掉了。后悔这样做,但如果您无法登录,我觉得将其保留在那里没有任何意义。
问题:
- 将 nltk_data 目录复制到 Apache 查找的 /var/www 是否可以,我应该再做一次吗?
- 如果 EC2 实例内存不足,它通常会严重杀死它以致于即使在停止和启动它之后,您也无法再登录吗?
- 如果这种情况再次发生,从我的本地终端,有没有办法以 'safe' 模式重新启动它,这样我就可以进入那里并尝试撤消我所做的任何杀死它的事情? (而不是仅仅有效地删除整个东西)
现在可能会再试一次,重新创建实例,也许 4MB 内存不足以让我的应用程序和 Apache 一起使用,想知道这些事情的答案或任何其他相关提示,以便我下次需要时使用执行此 nltk 步骤..
所以我在设置一个新实例后谢天谢地解决了这个问题,方法如下:
sudo ln -sT /home/ubuntu/nltk_data /usr/share/nltk_data
很高兴现在一切正常。一直在观察 top
系统监视器在新实例上的输出,它比自毁的实例稍大,并注意到它从未使用超过 40% 的内存,但 CPU 在主要脚本 运行 时长时间达到最大值。也许这就是杀死较小实例的原因..
当我最初去安装停用词时,它看起来在这里:
查找错误:
**********************************************************************
Resource 'corpora/stopwords' not found. Please use the NLTK
Downloader to obtain the resource: >>> nltk.download()
Searched in:
- '/home/ubuntu/nltk_data'
- '/usr/share/nltk_data'
- '/usr/local/share/nltk_data'
- '/usr/lib/nltk_data'
- '/usr/local/lib/nltk_data'
**********************************************************************
然而,apache 日志显示它看起来主要在相同的地方,除了..
] [pid 19:tid 13] [client 77..] Resource 'corpora/stopwords' not found. Please use the NLTK
[Sat Jul 08 16:35:19.694759 2017] [wsgi:error] [pid 19437:tid 1..] [client 77..] Downloader to obtain the resource: >>> nltk.download()
[Sat Jul 08 16:35:19.694762 2017] [wsgi:error] [pid 19437:tid 1..] [client 77..] Searched in:
[Sat Jul 08 16:35:19.694764 2017] [wsgi:error] [pid 19437:tid 1..] [client 77..] - '/var/www/nltk_data'
[Sat Jul 08 16:35:19.694766 2017] [wsgi:error] [pid 19437:tid 1..] [client 77..] - '/usr/share/nltk_data'
[Sat Jul 08 16:35:19.694768 2017] [wsgi:error] [pid 19437:tid 1..] [client 77..] - '/usr/local/share/nltk_data'
[Sat Jul 08 16:35:19.694770 2017] [wsgi:error] [pid 19437:tid 1..] [client 77..] - '/usr/lib/nltk_data'
[Sat Jul 08 16:35:19.694772 2017] [wsgi:error] [pid 19437:tid 1..] [client 77..] - '/usr/local/lib/nltk_data'
所以我认为 link 比复制更安全,并且使用 Apache 正在寻找的 /usr/share/
目录而不是弄乱它自己的目录。
所以我构建了一个数据和 NLP 应用程序,它有一个 flask 前端,它在本地运行完美,但是当我试图在 AWS (Ubuntu linux) 上设置它时,出现了大量问题我们被建议做的 Apache 服务器(烧瓶不是为部署而设计的)。使用此设置导入 python 模块突然变得相当困难,在 Whosebug 上有很多关于它的问题。已经解决了大约 5 个这样的问题,在整个代码中每次都使用大量 Python 日志记录语句来查看各种脚本究竟在什么时候崩溃或挂起(没有错误消息)然后它比以往任何时候都更进一步之前和这个关于 NLTK 语料库位置的问题出现了。不是导入好的 NLTK 模块,只是语料库文件夹。
因此,通常只需要以下代码即可:
import nltk
nltk.download()
它打开了一种用户界面,您可以在其中 select 下载哪个语料库或 NLP 项目以及是否更改目录以将其存储在其他地方。默认情况下,它会在您的主目录中创建目录 nltk_data/
并将其放在那里。
所以我起初认为问题是该文件夹需要 Apache 用户的权限 www-data
但那没有用。然后在 Apache 错误日志中注意到它查看了 4 个文件夹但没有找到任何东西 - 其中之一是 /var/www/nltk_data
,其中 none 是它实际所在的主目录。不记得其他 3..
我在 Whosebug (1,2,3,4) 上浏览了几个类似的问题,但决定采用更简单的方法。以下也是:
sudo mkdir /var/www/nltk_data
sudo cp -r nltk_data/ /var/www/
然后我再次刷新Apache日志,重启服务器并开始检查日志。它以通常的速度 运行,花了几分钟来完成脚本,正在重新检查日志,新的日志消息不断出现,然后一些关于内存的消息在 ssh 屏幕上不断重复,日志没有更长可见。我无法输入任何内容。它让我注销,不让我重新登录。进入 AWS 控制台,重新启动它两次。停了,再开,还是登录不上,一怒之下,关掉了。后悔这样做,但如果您无法登录,我觉得将其保留在那里没有任何意义。
问题:
- 将 nltk_data 目录复制到 Apache 查找的 /var/www 是否可以,我应该再做一次吗?
- 如果 EC2 实例内存不足,它通常会严重杀死它以致于即使在停止和启动它之后,您也无法再登录吗?
- 如果这种情况再次发生,从我的本地终端,有没有办法以 'safe' 模式重新启动它,这样我就可以进入那里并尝试撤消我所做的任何杀死它的事情? (而不是仅仅有效地删除整个东西)
现在可能会再试一次,重新创建实例,也许 4MB 内存不足以让我的应用程序和 Apache 一起使用,想知道这些事情的答案或任何其他相关提示,以便我下次需要时使用执行此 nltk 步骤..
所以我在设置一个新实例后谢天谢地解决了这个问题,方法如下:
sudo ln -sT /home/ubuntu/nltk_data /usr/share/nltk_data
很高兴现在一切正常。一直在观察 top
系统监视器在新实例上的输出,它比自毁的实例稍大,并注意到它从未使用超过 40% 的内存,但 CPU 在主要脚本 运行 时长时间达到最大值。也许这就是杀死较小实例的原因..
当我最初去安装停用词时,它看起来在这里: 查找错误:
**********************************************************************
Resource 'corpora/stopwords' not found. Please use the NLTK
Downloader to obtain the resource: >>> nltk.download()
Searched in:
- '/home/ubuntu/nltk_data'
- '/usr/share/nltk_data'
- '/usr/local/share/nltk_data'
- '/usr/lib/nltk_data'
- '/usr/local/lib/nltk_data'
**********************************************************************
然而,apache 日志显示它看起来主要在相同的地方,除了..
] [pid 19:tid 13] [client 77..] Resource 'corpora/stopwords' not found. Please use the NLTK
[Sat Jul 08 16:35:19.694759 2017] [wsgi:error] [pid 19437:tid 1..] [client 77..] Downloader to obtain the resource: >>> nltk.download()
[Sat Jul 08 16:35:19.694762 2017] [wsgi:error] [pid 19437:tid 1..] [client 77..] Searched in:
[Sat Jul 08 16:35:19.694764 2017] [wsgi:error] [pid 19437:tid 1..] [client 77..] - '/var/www/nltk_data'
[Sat Jul 08 16:35:19.694766 2017] [wsgi:error] [pid 19437:tid 1..] [client 77..] - '/usr/share/nltk_data'
[Sat Jul 08 16:35:19.694768 2017] [wsgi:error] [pid 19437:tid 1..] [client 77..] - '/usr/local/share/nltk_data'
[Sat Jul 08 16:35:19.694770 2017] [wsgi:error] [pid 19437:tid 1..] [client 77..] - '/usr/lib/nltk_data'
[Sat Jul 08 16:35:19.694772 2017] [wsgi:error] [pid 19437:tid 1..] [client 77..] - '/usr/local/lib/nltk_data'
所以我认为 link 比复制更安全,并且使用 Apache 正在寻找的 /usr/share/
目录而不是弄乱它自己的目录。