公司实体
@Entity
@Table(name="company")
public class Company implements Serializable {
private static final long serialVersionUID = 1L;
@Id
@GeneratedValue
private int id;
@Column(name="company_id")
private int cmpId;
@Column(name="company_name")
private String companyName;
@OneToOne(fetch=FetchType.LAZY, mappedBy="company")
private Employee employee;
}
Run Code Online (Sandbox Code Playgroud)
员工实体
@Entity
@Table(name="employee")
public class Employee implements Serializable {
private static final long serialVersionUID = 1L;
@Id
@GeneratedValue
private int id;
@Column(name="emp_id")
private int empId;
@Column(name="emp_name")
private String empName;
@OneToOne(fetch=FetchType.LAZY)
@JoinColumn(name="cmp_id", referencedColumnName="company_id")
private Company company;
}
Run Code Online (Sandbox Code Playgroud)
公司服务
@Service
public class CompanyService {
@Autowired
private CompanyRepository …Run Code Online (Sandbox Code Playgroud) 我正在使用JPA Hibernate的spring boot.我正在监视Heap的服务,发现我的每个请求大约需要40-50 MB.
因此,在GC运行的几个请求之后,内存会增加,它会释放内存,这将永远持续下去.
所以我的第一个问题是这个内存泄漏了吗?
我也试图找到造成这种情况的原因.所以,我使用Runtime.getRuntime()freeMemory和totalMemory()来识别在获取一个db调用并用它填充投影时大约使用了15MB
public interface RecommendationProjection {
public String getType();
public boolean getIsOK();
public int getId();
public int getTagCount();
public double getQuality() ;
public LocalDateTime getLastActivity();
}
Run Code Online (Sandbox Code Playgroud)
和hibernate返回567条记录,所以基本上我从DB得到的是567以上投影的列表,但是我不明白这个对象如何能够获得如此高的内存?休眠会导致这种情况吗?
使用投影时,hibernate查询特定字段或从数据库中获取所有字段?
然后我将这个域映射到DTO,再次使用15-20MB内存?这是我的DTO
public class RecommendationInfoDTO {
private String type;
private boolean isOK;
private int id;
private int tagCount;
private double quality ;
@JsonFormat(shape=JsonFormat.Shape.STRING, pattern="yyyy-MM-dd HH:mm:ss", timezone="IST")
private LocalDateTime lastActivity;
.. getters and setters
}
Run Code Online (Sandbox Code Playgroud)
仅供参考:对于监控,我使用的是VisualVM.谁能告诉我什么是可能的问题?
我还分析了堆转储,但无法得到任何东西?
这是我的堆转储差异.
我在一个请求和3个简单的普通mysql查询中发出6个hibernate查询(使用jdbc调用)
问题只是1个休眠呼叫.我认为我的休眠有些不对劲?有什么方法可以进行基于请求的分析吗?
Gc/Memory Graph
堆转储按大小排序
我正在运行命令kubectl top nodes并收到错误:
node@kubemaster:~/Desktop/metric$ kubectl top nodes
Error from server (ServiceUnavailable): the server is currently unable to handle the request (get nodes.metrics.k8s.io)
Run Code Online (Sandbox Code Playgroud)
Metric Server pod 正在运行,具有以下参数:
command:
- /metrics-server
- --metric-resolution=30s
- --requestheader-allowed-names=aggregator
- --kubelet-insecure-tls
- --kubelet-preferred-address-types=InternalIP,Hostname,InternalDNS,ExternalDNS,ExternalIP
Run Code Online (Sandbox Code Playgroud)
我得到的大部分答案是上述参数,仍然出现错误
E0601 18:33:22.012798 1 manager.go:111] unable to fully collect metrics: [unable to fully scrape metrics from source kubelet_summary:kubemaster: unable to fetch metrics from Kubelet kubemaster (192.168.56.30): Get https://192.168.56.30:10250/stats/summary?only_cpu_and_memory=true: context deadline exceeded, unable to fully scrape metrics from source kubelet_summary:kubenode1: unable to …Run Code Online (Sandbox Code Playgroud) 我对 Calico IP 有点困惑:
如果我使用以下命令将 calico 添加到 kubernetes 集群
kubectl apply -f https://docs.projectcalico.org/v3.14/manifests/calico.yaml
Run Code Online (Sandbox Code Playgroud)
CALICO_IPV4POOL_CIDR 为 192.168.0.0/16,因此 IP 范围为 192.168.0.0 至 192.168.255.255
现在我已经使用以下命令启动了集群:
kubeadm init --pod-network-cidr=20.96.0.0/12 --apiserver-advertise-address=192.168.56.30
Run Code Online (Sandbox Code Playgroud)
因此,现在 Pod 的 IP 地址(使用 Pod 网络 CIDR)将在:20.96.0.0 到 20.111.255.255 之间
这两个不同的IP是什么?我的 Pod 正在获取 IP 地址 20.96.205.192 等。
我正在尝试为maxent分类器创建Java实现。我需要将句子分为n不同的类别。
我看了斯坦福maxent分类器中的ColumnDataClassifier。但是我不明白如何创建训练数据。我需要训练数据的形式,其中训练数据包括用于单词的POS标签,以便用于分类的功能将类似于上一个单词,下一个单词等。
我正在寻找带有POS TAGGING句子和句子类别的训练数据。例如:
我/(POS)名称/(POS)是/(POS)XYZ /(POS)类别
任何帮助将不胜感激。
我试图了解n + 1问题,从而找到适当的解决方法。
我有两个实体:公司
@Entity
@Table(name="company")
public class Company implements Serializable {
private static final long serialVersionUID = 1L;
@Id
@GeneratedValue
private int id;
@Column(name="cmp_id")
private int cmpId;
@Column(name="company_name")
private String companyName;
@OneToMany(fetch=FetchType.LAZY)
@JoinColumn(name="cmp_id",referencedColumnName="cmp_id")
private Set<Employee> employee;
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public int getCmpId() {
return cmpId;
}
public void setCmpId(int cmpId) {
this.cmpId = cmpId;
}
public String getCompanyName() {
return companyName;
}
public void setCompanyName(String companyName) …Run Code Online (Sandbox Code Playgroud) 我有一台 Eureka Server A 和两个客户端实例 B(Client3) 和 C(Client4)
我从Eureka Server获取日志,如下:
2018-01-25 12:56:27.828 INFO 7145 --- [nio-8765-exec-2] c.n.e.registry.AbstractInstanceRegistry : Registered instance CLIENT3/client3:bb488bb73fd313321e393915f746bfe5 with status UP (replication=false)
2018-01-25 12:56:28.417 INFO 7145 --- [nio-8765-exec-3] c.n.e.registry.AbstractInstanceRegistry : Registered instance CLIENT3/client3:bb488bb73fd313321e393915f746bfe5 with status UP (replication=true)
2018-01-25 12:56:33.028 INFO 7145 --- [nio-8765-exec-3] c.n.e.registry.AbstractInstanceRegistry : Registered instance CLIENT4/client4:9fcbf4ed26162ee12c4c4b85774c39b1 with status UP (replication=false)
2018-01-25 12:56:33.542 INFO 7145 --- [nio-8765-exec-8] c.n.e.registry.AbstractInstanceRegistry : Registered instance CLIENT4/client4:9fcbf4ed26162ee12c4c4b85774c39b1 with status UP (replication=true)
Run Code Online (Sandbox Code Playgroud)
a) 它们是什么意思?我的意思是每个客户出现两次
b) 更新阈值:5,更新(最后分钟):8,为什么更新最后分钟是 8,它应该是 4?由于只有两个客户,每个客户每分钟 2 次节拍
c) 当我启动第3个服务D(CLient5)时,更新阈值是6而不是7,这是为什么? …
我在 Rxjava 中有我的代码,我想更改它的 reactor 项目。我的 rxjava 代码是
public Observable<Map<Integer, Data>> getObject(List<Integer> ids, List<String> filters) {
if (ids == null || ids.isEmpty()) {
return Observable.just(new HashMap<>());
}
return Observable.fromCallable(() -> {
Map<Integer, Data> data= client.getObject(ids, filters).getData();
return data;
});
}
Run Code Online (Sandbox Code Playgroud)
如何使用 Flux / Mono 编写此代码?我应该使用什么(Flux / Mono)?
基本上我想知道如何像 Observable 一样将 Map 存储到 Flux 或者我应该使用 Mono
我正在使用 spring-boot 并使用 logback 来生成日志。现在我想在每个日志中记录特定的标头。
我怎样才能做到这一点。
我的日志文件是
<?xml version="1.0" encoding="UTF-8"?>
<configuration>
<springProperty name="appName" source="spring.application.name" defaultValue="apigateway" />
<property name="LOG_PATH" value="${LOG_PATH}" />
<!-- Console logging -->
<appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
<encoder>
<pattern>
[%d{YYYY-MM-dd HH:mm:ss.SSS}] [%X{X-B3-CONVID:-}] [%X{X-B3-TraceId:-}] [%X{X-B3-SpanId:-}] [${HOSTNAME}] [%level] [${appName}] [%logger{36}.%M] - %msg %n
</pattern>
</encoder>
</appender>
<appender name="APPLICATIONLOG" class="ch.qos.logback.core.rolling.RollingFileAppender">
<append>true</append>
<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
<fileNamePattern>${LOG_PATH}/applogs/application.%d{yyyy-MM-dd}.log</fileNamePattern>
<maxHistory>60</maxHistory>
<totalSizeCap>20GB</totalSizeCap>
</rollingPolicy>
<encoder>
<Pattern>
[%d{YYYY-MM-dd HH:mm:ss.SSS}] [%X{X-B3-CONVID:-}] [%X{X-B3-TraceId:-}] [%X{X-B3-SpanId:-}] [${HOSTNAME}] [%level] [${appName}] [%logger{36}.%M] - %msg %n
</Pattern>
</encoder>
</appender>
<!-- set logger level: e.g. info, trace, debug, error …Run Code Online (Sandbox Code Playgroud) Hikari CP版本:2.7.4
这实际上不是问题,而是一些疑问。a)maxLifetime:30分钟后退出连接。它会在杀死它时自动创建一个新连接还是等待一个新请求然后创建一个新的connectios?考虑到池中有多个minIdle。
b)idleTimeout:闲置10分钟后会掉线吗?但是10分钟太高了。如果我将其标记为10s(从代码中看到10是min),可以吗,否则总会有比min-connections高的连接?
还什么时候连接被标记为空闲?
hibernate ×3
java ×2
kubernetes ×2
spring ×2
calico ×1
hikaricp ×1
jpa ×1
maxent ×1
spring-cloud ×1