标题说明了一切。我需要一种在 Cloud Run 上运行 32 位二进制文件的方法,它似乎只支持 64 位
我正在寻找的是我可以安装的某种模拟器或兼容层。
我无法将程序编译为 64 位。
哪个优先?
RHEL 7 服务器
例如,如果我有 device-mapper-libs.i686 和 device-mapper-libs.x86_64 运行哪一个?
他们俩都跑吗?
这会导致性能影响吗?
我有一台运行 Solaris 10 的服务器。它报告了 70+ GiB 的可用 RAM。我正在尝试在 64 位模式下使用 Java 1.7.0_80 启动 Tomcat 7.0.68。
服务器声称它无法分配 717 MiB 的 RAM。每次尝试时,我都会得到一个 hs_err_pidxxx.log 文件。它暗示了这一点:
# There is insufficient memory for the Java Runtime Environment to continue.
# Native memory allocation (malloc) failed to allocate 717225984 bytes for committing reserved memory.
# Possible reasons:
# The system is out of physical RAM or swap space
没有。有 70 GiB 可用,它正在尝试分配 700ish MiB。
# In 32 bit mode, the process size limit was hit
我们处于 64 位模式。
# Possible solutions:
# Reduce memory load on the system
除了操作系统,这台机器上没有别的东西。
# Increase physical memory or swap space
我们已经比需要的多两个数量级。
# Check if swap backing store is full
不。
# Use 64 bit Java on a 64 bit OS
完毕。
# Decrease Java heap size (-Xmx/-Xms)
如果可以的话。
# Decrease number of Java threads
这是怎么做到的?
# Decrease Java thread stack sizes (-Xss)
建议值?它是默认的,但我不知道调整它是什么。
# Set larger code cache with -XX:ReservedCodeCacheSize=
同样,我们处于默认状态。
$ swap -s
total: 48607296k bytes allocated + 18201336k reserved = 66808632k used, 311770552k available
操作系统: CentOS 6 (x86_64)
我已经安装并配置了清漆,但它现在无法启动。
# service varnish restart
Stopping Varnish Cache: [FAILED]
Starting Varnish Cache: [FAILED]
我已将此错误缩小到在/etc/varnish/default.vcl
.
我像这样包含 VCL:
include "/etc/varnish/domains/playwithbits.vcl";
如果我清空其中的内容,playwithbits.vcl
那么 varnish 就可以启动,但是一旦我添加内容,它就会失败。
我的内容playwithbits.vcl
是:
backend playwithbits {
.host = "localhost";
.port = "8080";
}
acl purge {
if (req.http.Host ~ "playwithbits.com") {
"localhost";
}
}
sub vcl_recv {
if (req.http.Host ~ "playwithbits.com") {
set req.backend = playwithbits;
if (req.request == "PURGE") {
if (!client.ip ~ purge) {
error 405 "Not allowed.";
}
return(lookup);
}
if (req.url ~ "^/$") {
unset req.http.cookie;
}
}
}
sub vcl_hit {
if (req.http.Host ~ "playwithbits.com") {
if (req.request == "PURGE") {
set obj.ttl = 0s;
error 200 "Purged.";
}
}
}
sub vcl_miss {
if (req.http.Host ~ "playwithbits.com") {
if (req.request == "PURGE") {
error 404 "Not in cache.";
}
if (!(req.url ~ "wp-(login|admin)")) {
unset req.http.cookie;
}
if (req.url ~ "^/[^?]+.(jpeg|jpg|png|gif|ico|js|css|txt|gz|zip|lzma|bz2|tgz|tbz|html|htm)(\?.|)$") {
unset req.http.cookie;
set req.url = regsub(req.url, "\?.$", "");
}
if (req.url ~ "^/$") {
unset req.http.cookie;
}
}
}
sub vcl_fetch {
if (req.http.Host ~ "playwithbits.com") {
if (req.url ~ "^/$") {
unset beresp.http.set-cookie;
}
if (!(req.url ~ "wp-(login|admin)")) {
unset beresp.http.set-cookie;
}
}
}
这是输出# strace -e trace=file service varnish start
execve("/sbin/service", ["service", "varnish", "start"], [/* 20 vars */]) = 0
access("/etc/ld.so.preload", R_OK) = 0
open("/etc/ld.so.preload", O_RDONLY) = 3
open("/etc/ld.so.cache", O_RDONLY) = 3
open("/lib64/libtinfo.so.5", O_RDONLY) = 3
open("/lib64/libdl.so.2", O_RDONLY) = 3
open("/lib64/libc.so.6", O_RDONLY) = 3
open("/dev/tty", O_RDWR|O_NONBLOCK) = 3
open("/usr/lib/locale/locale-archive", O_RDONLY) = 3
open("/proc/meminfo", O_RDONLY) = 3
stat("/etc/varnish", {st_mode=S_IFDIR|0755, st_size=4096, ...}) = 0
stat(".", {st_mode=S_IFDIR|0755, st_size=4096, ...}) = 0
open("/usr/lib64/gconv/gconv-modules.cache", O_RDONLY) = 3
open("/sbin/service", O_RDONLY) = 3
open("/etc/init.d/functions", O_RDONLY) = 3
--- SIGCHLD (Child exited) @ 0 (0) ---
stat("/etc/sysconfig/i18n", {st_mode=S_IFREG|0644, st_size=47, ...}) = 0
open("/dev/null", O_WRONLY|O_CREAT|O_TRUNC, 0666) = 3
open("/etc/profile.d/lang.sh", O_RDONLY) = 3
stat("/root/.i18n", 0x7fff831f79e0) = -1 ENOENT (No such file or directory)
stat("/etc/sysconfig/init", {st_mode=S_IFREG|0644, st_size=1153, ...}) = 0
open("/etc/sysconfig/init", O_RDONLY) = 3
open("/usr/share/locale/locale.alias", O_RDONLY) = 3
open("/usr/share/locale/en_US.UTF-8/LC_MESSAGES/initscripts.mo", O_RDONLY) = -1 ENOENT (No such file or directory)
open("/usr/share/locale/en_US.utf8/LC_MESSAGES/initscripts.mo", O_RDONLY) = -1 ENOENT (No such file or directory)
open("/usr/share/locale/en_US/LC_MESSAGES/initscripts.mo", O_RDONLY) = -1 ENOENT (No such file or directory)
open("/usr/share/locale/en.UTF-8/LC_MESSAGES/initscripts.mo", O_RDONLY) = -1 ENOENT (No such file or directory)
open("/usr/share/locale/en.utf8/LC_MESSAGES/initscripts.mo", O_RDONLY) = -1 ENOENT (No such file or directory)
open("/usr/share/locale/en/LC_MESSAGES/initscripts.mo", O_RDONLY) = -1 ENOENT (No such file or directory)
--- SIGCHLD (Child exited) @ 0 (0) ---
--- SIGCHLD (Child exited) @ 0 (0) ---
chdir("/") = 0
stat("/etc/init.d/varnish", {st_mode=S_IFREG|0755, st_size=2837, ...}) = 0
stat(".", {st_mode=S_IFDIR|0755, st_size=4096, ...}) = 0
stat("/sbin/env", 0x7fff831f8960) = -1 ENOENT (No such file or directory)
stat("/usr/sbin/env", 0x7fff831f8960) = -1 ENOENT (No such file or directory)
stat("/bin/env", {st_mode=S_IFREG|0755, st_size=23832, ...}) = 0
stat("/bin/env", {st_mode=S_IFREG|0755, st_size=23832, ...}) = 0
access("/bin/env", X_OK) = 0
stat("/bin/env", {st_mode=S_IFREG|0755, st_size=23832, ...}) = 0
access("/bin/env", R_OK) = 0
stat("/bin/env", {st_mode=S_IFREG|0755, st_size=23832, ...}) = 0
stat("/bin/env", {st_mode=S_IFREG|0755, st_size=23832, ...}) = 0
access("/bin/env", X_OK) = 0
stat("/bin/env", {st_mode=S_IFREG|0755, st_size=23832, ...}) = 0
access("/bin/env", R_OK) = 0
Starting Varnish Cache: [FAILED]
--- SIGCHLD (Child exited) @ 0 (0) ---
有谁知道这个问题是什么?
解决方案:
问题在于以下块:
acl purge {
if (req.http.Host ~ "playwithbits.com") {
"localhost";
}
}
acl purge
只能取字符串作为值,所以if
无效。替换为:
acl purge {
"localhost";
}
它就像一个魅力。
我正在尝试启动并运行 Google 的 Dart 语言,但在运行 dart2js 时出错。我正在运行 Arch linux 并从 AUR安装了dart-sdk 。下面是一些相关的终端输出。
% dart2js main.dart
/usr/local/bin/dart2js: line 7: /usr/local/bin/dart: No such file or directory
% cat /usr/local/bin/dart2js
#!/bin/sh
# Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file
# for details. All rights reserved. Use of this source code is governed by a
# BSD-style license that can be found in the LICENSE file.
BIN_DIR=`dirname $0`
exec $BIN_DIR/dart --allow_string_plus=false $BIN_DIR/../lib/dart2js/lib/compiler/implementation/dart2js.dart "$@"
% file /usr/local/bin/dart
/usr/local/bin/dart: ELF 32-bit LSB executable, Intel 80386, version 1 (SYSV),
dynamically linked (uses shared libs), for GNU/Linux 2.6.15,
BuildID[sha1]=0x27fe166ca015c1adfeaf3a6f9c018e7d7af46d9f, stripped
% ls -alh /usr/local/bin
total 4.9M
drwxr-xr-x 2 root root 4.0K Jun 10 22:51 .
drwxr-xr-x 12 root root 4.0K Jun 10 22:51 ..
-rwxr-xr-x 1 root root 422K May 10 22:41 cargo
-rwxr-xr-x 1 root root 2.7M Jun 10 22:50 dart
-rwxr-xr-x 1 root root 360 Jun 6 16:20 dart2js
-rwxr-xr-x 1 root root 176 Jun 6 16:20 pub
-rwxr-xr-x 1 root root 166K May 10 22:41 rustc
-rwxr-xr-x 1 root root 1.6M May 10 22:41 rustdoc
% uname -rm
3.3.7-1-ARCH x86_64
可能是因为我运行的是 64 位操作系统,而 dart 二进制文件是 32 位的吗?
为什么即使在 Windows Server 2003 SP2 下使用物理地址扩展,我的服务器也不能识别超过 4GB 的 RAM?我认为 PAE 应该使服务器能够使用超过 4GB 的 RAM,但是升级机器后它有 7GB RAM,Windows 只能看到其中的 4GB。RAM 模块全部由服务器管理员软件识别(2 x 2GB、2 x 1GB 和 2 x 512MB)。我可以做些什么来让它“看到”额外的 3GB?
谢谢
我在 32 位的 Windows 7 上构建了 ASP.NET Web 服务。此服务的所有依赖项以 x64 位的 Release 模式编译。现在,我将它安装在 Windows 8 64 位上,当我访问此服务时,我收到错误“无法加载 OraOps10.dll”。在互联网中 x32-x64 位不兼容的情况下,我没有成功找到有关 oracle 客户端这个问题的任何事情。
你有什么想法吗?
非常感谢。
我正在尝试使用 VMware Workstation(6.5.3.185404 和 7.0.1.227600)在 32 位主机(Hardened Gentoo Linux,内核 2.6.28-hardened-r9)上启动 64 位客户机(MacOSX 和 Windows7)。
如果在 BIOS 中禁用 VT-X,VMware 会拒绝启动 64 位客户机(如预期的那样)。如果在 BIOS 中启用了 VT-X,VMware 会毫无怨言地启动来宾,但是在大约一秒钟内(我想一旦来宾尝试打开 64 位)我的主机就会重新启动(实际上,这更像是重置 - 正常的重新启动过程跳过并立即开始 BIOS POST)。
我的硬件是华硕 P5B-Deluxe 上的 Core 2 Duo 6600,具有最新的稳定 BIOS 1101。我已重启系统,然后在 BIOS 中启用了 Vanderpool。我的 CPU 不支持可信执行技术,并且无法在 BIOS 中禁用它。在那之后我重新启动了几次,有时会重新启动,并确保在 BIOS 中启用了 Vandertool。
我还运行了 VMware-guest64check-5.5.0-18463 工具,它报告“此主机能够在此 VMware 产品下运行 64 位来宾操作系统。”。
大约一年前,我尝试在内核中禁用强化以确保这不是因为 PaX/GrSecurity,但这无济于事。我还没有检查启用了 VT-X 的 32 位客户机,但没有 VT-X,它们可以正常工作。华硕提供“测试版”BIOS 更新,但根据他们的描述,这些更新并不能解决这个问题,所以我不确定尝试它是否是个好主意。
我现在最好的猜测是主板/BIOS错误。有任何想法吗?
更新 1:我尝试启动http://communities.vmware.com/docs/DOC-8978提供的 vt.iso ,报告如下:
CPU 0: VT is enabled on this core
CPU 1: VT is enabled on this core
更新 2:我刚刚尝试使用所有可能的虚拟化模式启动 32 位客户机(Windows7、Ubuntu9.04 和 Gentoo)。在Automatic
, 中Automatic with Replay
,Binary translation
一切正常,在Intel VT-x/EPT or AMD-V/RVI
我收到消息“此主机不支持 EPT。将软件虚拟化与软件 MMU 一起使用。” 一切正常。但是在Intel VT-x or AMD-V
模式下,所有 32 位来宾都像 64 位来宾一样重置主机!因此,此问题并非特定于 64 位客户机。
还有一件事。Intel VT-x or AMD-V
对两个 32/64 位来宾使用模式我的主机在启动 VM 后立即重置,即在 VM BIOS POST 之前和来宾甚至开始启动之前。但是使用Intel VT-x/EPT or AMD-V/RVI
VM BIOS 运行正常,然后 64 位客户机开始启动(Windows7 完成“加载文件”进度条),并且只有在主机重置之后。
Ram 大约有 1/2 在使用中,四个 CPU 几乎都处于空闲状态。我尝试了“Microsoft Server Performance Advisor”,但没有成功。事件日志中没有硬件故障等条目。
然而我可以点击开始菜单并等待 15 秒等待任何新的尝试。启动软件需要 30 秒才能响应。
该服务器有一个 8 驱动器 WD RE 250 gig,每个戴尔 Perc 6 Sata RAID 阵列和英特尔千兆网卡。
任何人都有任何可以分析此服务器出了什么问题的软件名称?