[ 
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]

Reply via email to