我正在使用thorntail微档案框架来监视简单的Rest Service应用程序。由于收到以下消息,因此在openshift上进行应用程序部署工作正常,但运行状况监视器却无法运行:
准备情况调查失败:获取http://10.116.0.57:8080/health/live:拨打tcp 10.116.0.57:8080:连接:连接被拒绝
但是可以使用服务路线网址访问健康服务,例如http://thorntail-myproject.apps-crc.testing/health/live并获得结果:
{“状态”:“ UP”,“检查”:[{“名称”:“服务器状态”,“状态”:“ UP”}]}
HealthCheck实施类中同时包含“活力”和“就绪”两个注释。通过pod的远程容器外壳执行curl时,还会获得服务响应。
这些是我在pom.xml中使用的依赖项:
#include <thread>
#include <mutex>
#include <iostream>
#include <condition_variable>
#include <vector>
#include <unistd.h>
#define MAX_SIZE 2
struct Task
{
std::condition_variable m_cond;
std::mutex m_lock;
Task(){}
};
std::vector<int> m_data;
Task m_producer;
Task m_consumers[MAX_SIZE];
std::mutex m_lock;
static bool s_Busy = false;
static void producer(void)
{
for(;;)
{
size_t input=0;
std::unique_lock<std::mutex> lock{m_lock};//{m_producer.m_lock};
if (!s_Busy) {
std::cout << "Enter a number: ";
std::cin >> input;
std::cout << "Producer waiting..." << std::this_thread::get_id() << "\r\n";
m_producer.m_cond.wait(lock);
}
s_Busy = true;
if (m_data.size() < input) {
for (size_t i=0; i < input; ++i){
m_data.push_back(i);
}
}
for (int i=0; i < MAX_SIZE; ++i) {
m_consumers[i].m_cond.notify_one();
}
lock.unlock();
}
}
static void consumers(void)
{
for(;;)
{
std::unique_lock<std::mutex> lock{m_lock};
if (!s_Busy) {
std::cout <<"Consumers waiting....!" << std::this_thread::get_id() << "\r\n";
for (int i=0; i < MAX_SIZE; ++i) {
m_consumers[i].m_cond.notify_all();
}
}
if (!m_data.empty()) {
std::cout << "Remove: " << m_data.at(0) << std::endl;
m_data.erase(m_data.begin());
usleep(1);
}
s_Busy = false;
m_producer.m_cond.notify_one();
lock.unlock();
}
}
int main()
{
std::vector<std::thread> cnsmrs;
std::thread usr{producer};
for (int i=0; i < MAX_SIZE; ++i)
cnsmrs.push_back(std::thread{consumers});
usr.join();
for(int i=0 ; i < MAX_SIZE; ++i)
cnsmrs.at(i).join();
return 0;
}
有什么想法吗?
答案 0 :(得分:0)
问题可能是由许多原因引起的,但是您可以尝试以下操作:
上面的两件事似乎很正确,因为您可以访问Route URL,但是我们不知道您的部署以及部署的数量。