[
https://issues.apache.org/jira/browse/HADOOP-17861?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=18040993#comment-18040993
]
ASF GitHub Bot commented on HADOOP-17861:
-----------------------------------------
eubnara commented on code in PR #8106:
URL: https://github.com/apache/hadoop/pull/8106#discussion_r2567612919
##########
hadoop-common-project/hadoop-registry/src/main/java/org/apache/hadoop/registry/server/dns/RegistryDNS.java:
##########
@@ -805,6 +832,65 @@ public void nioTCPClient(SocketChannel ch) throws
IOException {
}
+ /**
+ * Process a UDP request.
+ *
+ * @param channel the datagram channel for the request.
+ * @param remoteAddress the socket address of client.
+ * @param input the input ByteBuffer.
+ * @throws IOException if the udp processing generates an issue.
+ */
+ public void nioUDPClient(DatagramChannel channel, SocketAddress
remoteAddress, ByteBuffer input) throws IOException {
+ ByteBuffer output = ByteBuffer.allocate(4096);
+ byte[] in = null;
+ byte[] response = null;
+ Message query = null;
+ try {
+ try {
+ int position = input.position();
+ in = new byte[position];
+ input.flip();
+ input.get(in);
+ query = new Message(in);
+ LOG.info("{}: received UDP query {}", remoteAddress,
+ query.getQuestion());
+ response = generateReply(query, null);
+ if (response.length > output.capacity()) {
+ LOG.warn("{}: Response of UDP query {} exceeds limit {}",
+ remoteAddress, query.getQuestion(), output.limit());
+ query.getHeader().setFlag(Flags.TC);
Review Comment:
If the response of UDP query exceeds limit, TC(truncated) flag should be set
in order for the client to request again with TCP query.
> improve YARN Registry DNS Server qps
> ------------------------------------
>
> Key: HADOOP-17861
> URL: https://issues.apache.org/jira/browse/HADOOP-17861
> Project: Hadoop Common
> Issue Type: Improvement
> Components: registry
> Affects Versions: 3.1.2
> Reporter: YUBI LEE
> Priority: Major
> Labels: pull-request-available
> Time Spent: 0.5h
> Remaining Estimate: 0h
>
> There are some points to improve the performance of YARN Registry DNS Server.
> - Do not print unnecessary logs (It just needs change log4j.properties)
> -- log4j.logger.org.apache.hadoop.registry.server.dns=WARN
> - Change some loglevels at points which can affect performance degradation.
> - Use "newFixedThreadPool" instead of "newCachedThreadPool" to prevent OOM
> - Use Blocking on TCP handler. Using non-blocking and sleeping some
> time("Thread.sleep(500)") is meaningless.
> In our environment, QPS of original yarn dns server is about 5000 (UDP), 100
> (TCP).
> Now, QPS of our improved yarn dns server is about 47000 (UDP), 500 (TCP).
> I will make a pull request at https://github.com/apache/hadoop soon.
--
This message was sent by Atlassian Jira
(v8.20.10#820010)
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]